From 7c373ddad64dd3634fb1cad83b0b3f1cb06efe5f Mon Sep 17 00:00:00 2001 From: Volnei Munhoz Date: Mon, 29 Dec 2025 19:41:41 -0300 Subject: [PATCH] feat: Introduce biome (#25664) * Configure biome * Fix companion build * fix: remove generated files from formatter ignore list to enable proper formatting Co-Authored-By: Volnei Munhoz * fix: add explicit stripe dependency to @calcom/features to fix type resolution Co-Authored-By: Volnei Munhoz * fix: rename const require to nodeRequire in generate-swagger.ts to avoid TypeScript reserved identifier conflict Co-Authored-By: Volnei Munhoz * fix: add guard for document in makeBodyVisible to prevent test environment teardown errors Co-Authored-By: Volnei Munhoz * fix: replace ESLint with Biome CLI in embed-code-generator.e2e.ts Co-Authored-By: Volnei Munhoz * fix: address cubic review comments - Fix invalid --reporter-path Biome CLI option by using shell redirection - Fix packages/lib lint report filename (app-store.json -> lib.json) - Add typescript-eslint and eslint back to companion for lint:react-compiler - Add missing restricted import rules to biome.json: - packages/lib: add ../trpc/** and @trpc/server restrictions - packages/trpc: add ../apps/web/** restriction Co-Authored-By: Volnei Munhoz * chore: regenerate companion bun.lock after adding eslint dependencies Co-Authored-By: Volnei Munhoz * Remove remaining eslint things * add tailwind directives --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .prettierignore | 19 - .prettierrc.js | 1 - .vscode/extensions.json | 17 +- AGENTS.md | 24 +- agents/commands.md | 8 +- apps/api/package.json | 3 - apps/api/v1/.prettierignore | 5 - apps/api/v1/eslint.config.mjs | 3 - apps/api/v1/package.json | 5 +- apps/api/v2/.prettierrc.js | 7 - apps/api/v2/package.json | 7 +- apps/api/v2/src/swagger/generate-swagger.ts | 10 +- apps/web/.prettierignore | 1 - apps/web/eslint.config.mjs | 3 - apps/web/package.json | 7 +- .../playwright/embed-code-generator.e2e.ts | 72 +- biome.json | 188 ++ companion/bun.lock | 253 +- companion/package.json | 30 +- .../open-source-contribution/code-styling.mdx | 4 +- eslint.config.mjs | 3 - .../credential-sync/eslint.config.mjs | 3 - example-apps/credential-sync/package.json | 3 +- .../pages/api/setTokenInCalCom.ts | 6 +- lint-staged.config.mjs | 12 +- package.json | 6 +- packages/app-store-cli/package.json | 3 +- packages/app-store-cli/src/build.ts | 141 +- packages/app-store/.prettierignore | 1 - packages/app-store/apps.browser.generated.tsx | 169 +- .../app-store/apps.keys-schemas.generated.ts | 1 - packages/app-store/apps.metadata.generated.ts | 1 - packages/app-store/apps.schemas.generated.ts | 1 - .../bookerApps.metadata.generated.ts | 1 - packages/app-store/eslint.config.mjs | 16 - packages/app-store/package.json | 7 +- packages/app-store/routing-forms/package.json | 5 +- packages/config/package.json | 15 - packages/config/prettier-preset.js | 41 - packages/coss-ui/package.json | 4 +- packages/embeds/embed-core/package.json | 4 +- .../embeds/embed-core/src/embed-iframe.ts | 4 + .../src/embed-iframe/lib/embedStore.ts | 2 +- packages/embeds/embed-react/package.json | 3 +- packages/embeds/embed-snippet/package.json | 3 +- packages/eslint-config/base.js | 60 - packages/eslint-config/next.js | 51 - packages/eslint-config/package.json | 30 - packages/eslint-config/react-internal.js | 41 - packages/eslint-plugin/package.json | 16 - packages/eslint-plugin/src/configs/index.ts | 4 - .../eslint-plugin/src/configs/recommended.ts | 16 - packages/eslint-plugin/src/index.js | 15 - .../avoid-prisma-client-import-for-enums.ts | 45 - .../src/rules/avoid-web-storage.ts | 127 - .../rules/deprecated-imports-next-router.ts | 38 - .../src/rules/deprecated-imports.ts | 41 - packages/eslint-plugin/src/rules/index.ts | 13 - .../eslint-plugin/src/rules/my-first-rule.ts | 23 - .../src/rules/no-direct-prisma-import.ts | 43 - .../src/rules/no-prisma-include-true.ts | 100 - .../src/rules/no-scroll-into-view-embed.ts | 48 - .../src/rules/no-this-in-static-method.ts | 109 - packages/features/eslint.config.mjs | 11 - packages/features/package.json | 3 +- packages/lib/OgImages.tsx | 105 +- .../lib/apps/shouldRedirectToAppOnboarding.ts | 2 +- packages/lib/eslint.config.mjs | 39 - packages/lib/package.json | 7 +- packages/lib/videoTokens.ts | 25 +- .../platform/examples/base/eslint.config.mjs | 3 - packages/platform/examples/base/package.json | 3 +- .../base/src/pages/api/get-managed-users.ts | 2 +- packages/platform/types/.prettierrc.js | 6 - packages/trpc/eslint.config.mjs | 14 - packages/trpc/package.json | 5 +- packages/ui/components/icon/icon-names.ts | 312 +-- packages/ui/package.json | 8 +- packages/ui/scripts/build-icons.mjs | 6 +- yarn.lock | 2477 +---------------- 80 files changed, 1024 insertions(+), 3946 deletions(-) delete mode 100644 .prettierignore delete mode 100644 .prettierrc.js delete mode 100644 apps/api/v1/.prettierignore delete mode 100644 apps/api/v1/eslint.config.mjs delete mode 100644 apps/api/v2/.prettierrc.js delete mode 100644 apps/web/.prettierignore delete mode 100644 apps/web/eslint.config.mjs create mode 100644 biome.json delete mode 100644 eslint.config.mjs delete mode 100644 example-apps/credential-sync/eslint.config.mjs delete mode 100644 packages/app-store/.prettierignore delete mode 100644 packages/app-store/eslint.config.mjs delete mode 100644 packages/config/prettier-preset.js delete mode 100644 packages/eslint-config/base.js delete mode 100644 packages/eslint-config/next.js delete mode 100644 packages/eslint-config/package.json delete mode 100644 packages/eslint-config/react-internal.js delete mode 100644 packages/eslint-plugin/package.json delete mode 100644 packages/eslint-plugin/src/configs/index.ts delete mode 100644 packages/eslint-plugin/src/configs/recommended.ts delete mode 100644 packages/eslint-plugin/src/index.js delete mode 100644 packages/eslint-plugin/src/rules/avoid-prisma-client-import-for-enums.ts delete mode 100644 packages/eslint-plugin/src/rules/avoid-web-storage.ts delete mode 100644 packages/eslint-plugin/src/rules/deprecated-imports-next-router.ts delete mode 100644 packages/eslint-plugin/src/rules/deprecated-imports.ts delete mode 100644 packages/eslint-plugin/src/rules/index.ts delete mode 100644 packages/eslint-plugin/src/rules/my-first-rule.ts delete mode 100644 packages/eslint-plugin/src/rules/no-direct-prisma-import.ts delete mode 100644 packages/eslint-plugin/src/rules/no-prisma-include-true.ts delete mode 100644 packages/eslint-plugin/src/rules/no-scroll-into-view-embed.ts delete mode 100644 packages/eslint-plugin/src/rules/no-this-in-static-method.ts delete mode 100644 packages/features/eslint.config.mjs delete mode 100644 packages/lib/eslint.config.mjs delete mode 100644 packages/platform/examples/base/eslint.config.mjs delete mode 100644 packages/platform/types/.prettierrc.js delete mode 100644 packages/trpc/eslint.config.mjs diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 82be0c9134..0000000000 --- a/.prettierignore +++ /dev/null @@ -1,19 +0,0 @@ -node_modules -.next -public -**/**/node_modules -**/**/.next -**/**/public - -*.lock -*.log - -.gitignore -.npmignore -.prettierignore -.DS_Store -.eslintignore -packages/prisma/zod -packages/prisma/enums -apps/web/public/embed -packages/ui/components/icon/dynamicIconImports.tsx diff --git a/.prettierrc.js b/.prettierrc.js deleted file mode 100644 index 0115e00ff9..0000000000 --- a/.prettierrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("./packages/config/prettier-preset"); diff --git a/.vscode/extensions.json b/.vscode/extensions.json index cf089b9f19..19a073daa4 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,13 +1,12 @@ { "recommendations": [ - "DavidAnson.vscode-markdownlint", // markdown linting - "yzhang.markdown-all-in-one", // nicer markdown support - "esbenp.prettier-vscode", // prettier plugin - "dbaeumer.vscode-eslint", // eslint plugin - "ban.spellright", // Spell check for docs - "stripe.vscode-stripe", // stripe VSCode extension - "Prisma.prisma", // syntax|format|completion for prisma - "rebornix.project-snippets", // Share useful snippets between collaborators - "inlang.vs-code-extension" // improved i18n DX + "biomejs.biome", + "DavidAnson.vscode-markdownlint", + "yzhang.markdown-all-in-one", + "ban.spellright", + "stripe.vscode-stripe", + "Prisma.prisma", + "rebornix.project-snippets", + "inlang.vs-code-extension" ] } diff --git a/AGENTS.md b/AGENTS.md index 57d718f7db..a7dbde3ac4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -16,6 +16,8 @@ You are a senior Cal.com engineer working in a Yarn/Turbo monorepo. You prioriti - Use `date-fns` or native `Date` instead of Day.js when timezone awareness isn't needed - Put permission checks in `page.tsx`, never in `layout.tsx` - Use `ast-grep` for searching if available; otherwise use `rg` (ripgrep), then fall back to `grep` +- Use Biome for formatting and linting + ## Don't @@ -36,11 +38,8 @@ You are a senior Cal.com engineer working in a Yarn/Turbo monorepo. You prioriti # Type check - always run on changed files yarn type-check:ci --force -# Lint single file -yarn eslint --fix path/to/file.tsx - -# Format single file -yarn prettier --write path/to/file.tsx +# Lint and format single file +yarn biome check --write path/to/file.tsx # Unit test specific file yarn vitest run path/to/file.test.ts @@ -69,9 +68,9 @@ yarn dev # Start dev server yarn dx # Dev with database setup # Build & check -yarn build # Build all packages -yarn lint:fix # Lint and fix all -yarn type-check # Type check all +yarn build # Build all packages +yarn biome check --write . # Lint and format all +yarn type-check # Type check all # Tests (use TZ=UTC for consistency) TZ=UTC yarn test # All unit tests @@ -82,6 +81,14 @@ yarn prisma generate # Regenerate types after schema changes yarn workspace @calcom/prisma db-migrate # Run migrations ``` +### Biome focused workflow ++ +```bash +yarn biome check --write . +yarn type-check:ci --force +``` + + ## Boundaries ### Always do @@ -89,6 +96,7 @@ yarn workspace @calcom/prisma db-migrate # Run migrations - Run relevant tests before pushing - Use `select` in Prisma queries - Follow conventional commits for PR titles +- Run Biome before pushing ### Ask first - Adding new dependencies diff --git a/agents/commands.md b/agents/commands.md index ec193cf8d7..f6da7d8a88 100644 --- a/agents/commands.md +++ b/agents/commands.md @@ -16,11 +16,11 @@ ## Lint & Type Check -- `yarn lint` - Run ESLint on codebase -- `yarn lint:fix` - Run ESLint and fix issues -- `yarn lint:report` - Generate lint report +- `yarn lint` - Run Biome across the codebase +- `yarn lint:fix` - Run Biome and apply safe fixes +- `yarn lint:report` - Generate Biome lint report - `yarn type-check` - Run TypeScript type checking -- `yarn format` - Format code with Prettier +- `yarn format` - Format code with Biome ## Testing Commands diff --git a/apps/api/package.json b/apps/api/package.json index c223a5806b..f1e966f519 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -13,8 +13,5 @@ "connect": "3.7.0", "http": "0.0.1-security", "http-proxy-middleware": "2.0.9" - }, - "devDependencies": { - "@calcom/eslint-config": "workspace:*" } } diff --git a/apps/api/v1/.prettierignore b/apps/api/v1/.prettierignore deleted file mode 100644 index 745ffcee46..0000000000 --- a/apps/api/v1/.prettierignore +++ /dev/null @@ -1,5 +0,0 @@ -.next/ -coverage/ -node_modules/ -tests/ -templates/ \ No newline at end of file diff --git a/apps/api/v1/eslint.config.mjs b/apps/api/v1/eslint.config.mjs deleted file mode 100644 index e08e866e1b..0000000000 --- a/apps/api/v1/eslint.config.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { nextJsConfig } from "@calcom/eslint-config/next-js"; - -export default nextJsConfig; diff --git a/apps/api/v1/package.json b/apps/api/v1/package.json index 6b0e8297bb..16e2179b0d 100644 --- a/apps/api/v1/package.json +++ b/apps/api/v1/package.json @@ -10,15 +10,14 @@ "build": "next build", "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf .next", "dev": "PORT=3003 next dev", - "lint": "eslint .", - "lint:fix": "eslint . --ext .ts,.js,.tsx,.jsx --fix", + "lint": "biome lint .", + "lint:fix": "biome lint --write .", "start": "PORT=3003 next start", "docker-start-api": "PORT=80 next start", "type-check": "tsc --pretty --noEmit", "type-check:ci": "tsc-absolute --pretty --noEmit" }, "devDependencies": { - "@calcom/eslint-config": "workspace:*", "@calcom/tsconfig": "workspace:*", "@calcom/types": "workspace:*", "node-mocks-http": "1.16.2", diff --git a/apps/api/v2/.prettierrc.js b/apps/api/v2/.prettierrc.js deleted file mode 100644 index de9853706f..0000000000 --- a/apps/api/v2/.prettierrc.js +++ /dev/null @@ -1,7 +0,0 @@ -const rootConfig = require("../../../packages/config/prettier-preset"); - -module.exports = { - ...rootConfig, - importOrder: ["^./instrument", ...rootConfig.importOrder], - importOrderParserPlugins: ["typescript", "decorators-legacy"], -}; diff --git a/apps/api/v2/package.json b/apps/api/v2/package.json index 6b60bbbc81..e73c3c8217 100644 --- a/apps/api/v2/package.json +++ b/apps/api/v2/package.json @@ -7,7 +7,7 @@ "private": true, "scripts": { "build": "yarn dev:build && nest build", - "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", + "format": "biome format --write src test", "start": "nest start", "dev:build:watch": "concurrently --names \"libraries,lru-fix,constants,enums,utils,types\" \"yarn _dev:build:watch:libraries\" \"yarn _dev:build:watch:libraries:lru-fix\" \"yarn _dev:build:watch:constants\" \"yarn _dev:build:watch:enums\" \"yarn _dev:build:watch:utils\" \"yarn _dev:build:watch:types\"", "_dev:build:watch:libraries": "yarn workspace @calcom/platform-libraries build:watch", @@ -86,7 +86,7 @@ "zod": "3.25.76" }, "devDependencies": { - "@calcom/eslint-config": "workspace:*", + "@biomejs/biome": "^2.3.8", "@golevelup/ts-jest": "0.4.0", "@nestjs/cli": "10.3.2", "@nestjs/schematics": "10.1.1", @@ -98,14 +98,11 @@ "@types/luxon": "3.4.2", "@types/passport-jwt": "3.0.13", "@types/supertest": "2.0.16", - "@typescript-eslint/eslint-plugin": "6.21.0", - "@typescript-eslint/parser": "6.21.0", "concurrently": "9.1.2", "jest": "29.7.0", "jest-date-mock": "1.0.10", "jest-junit": "^16.0.0", "node-mocks-http": "1.16.2", - "prettier": "2.8.7", "source-map-support": "0.5.21", "supertest": "6.3.4", "ts-jest": "29.1.4", diff --git a/apps/api/v2/src/swagger/generate-swagger.ts b/apps/api/v2/src/swagger/generate-swagger.ts index 1d1519804d..bf69e6cb0e 100644 --- a/apps/api/v2/src/swagger/generate-swagger.ts +++ b/apps/api/v2/src/swagger/generate-swagger.ts @@ -2,15 +2,19 @@ import { getEnv } from "@/env"; import { Logger } from "@nestjs/common"; import type { NestExpressApplication } from "@nestjs/platform-express"; import { SwaggerModule, DocumentBuilder } from "@nestjs/swagger"; -import { +import type { PathItemObject, PathsObject, OperationObject, } from "@nestjs/swagger/dist/interfaces/open-api-spec.interface"; import "dotenv/config"; import * as fs from "fs"; -import { Server } from "http"; +import type { Server } from "http"; import { spawnSync } from "node:child_process"; +import { createRequire } from "node:module"; + +const nodeRequire = createRequire(__filename); +const biomeBin = nodeRequire.resolve("@biomejs/biome/bin/biome"); const HttpMethods: (keyof PathItemObject)[] = ["get", "post", "put", "delete", "patch", "options", "head"]; @@ -28,7 +32,7 @@ export async function generateSwaggerForApp(app: NestExpressApplication) if (fs.existsSync(docsOutputFile) && getEnv("NODE_ENV") === "development") { fs.unlinkSync(docsOutputFile); fs.writeFileSync(docsOutputFile, stringifiedContents, { encoding: "utf8" }); - spawnSync("npx", ["prettier", docsOutputFile, "--write"], { stdio: "inherit" }); + spawnSync("node", [biomeBin, "format", "--write", docsOutputFile], { stdio: "inherit" }); } if (!process.env.DOCS_URL) { diff --git a/apps/web/.prettierignore b/apps/web/.prettierignore deleted file mode 100644 index a31370892c..0000000000 --- a/apps/web/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -public/embed \ No newline at end of file diff --git a/apps/web/eslint.config.mjs b/apps/web/eslint.config.mjs deleted file mode 100644 index 61d4298ea9..0000000000 --- a/apps/web/eslint.config.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { nextJsConfig } from "@calcom/eslint-config/next-js"; - -export default [...nextJsConfig]; diff --git a/apps/web/package.json b/apps/web/package.json index 4bd8fd37e9..f35468f7bf 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -20,9 +20,9 @@ "copy-app-store-static": "node scripts/copy-app-store-static.js", "build": "next build && yarn sentry:release", "start": "next start", - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "lint:report": "eslint . --format json --output-file ../../lint-results/web.json", + "lint": "biome lint .", + "lint:fix": "biome lint --write .", + "lint:report": "biome lint --reporter json . > ../../lint-results/web.json", "check-changed-files": "ts-node scripts/ts-check-changed-files.ts", "translate-locales": "ts-node scripts/check-missing-translations.ts", "stripe:listen": "stripe listen --forward-to http://localhost:3000/api/stripe/webhook" @@ -152,7 +152,6 @@ "devDependencies": { "@babel/core": "7.26.10", "@calcom/config": "workspace:*", - "@calcom/eslint-config": "workspace:*", "@calcom/types": "workspace:*", "@microsoft/microsoft-graph-types-beta": "0.15.0-preview", "@playwright/test": "1.57.0", diff --git a/apps/web/playwright/embed-code-generator.e2e.ts b/apps/web/playwright/embed-code-generator.e2e.ts index c70daf7cfe..7367f116a6 100644 --- a/apps/web/playwright/embed-code-generator.e2e.ts +++ b/apps/web/playwright/embed-code-generator.e2e.ts @@ -1,6 +1,7 @@ import type { Page } from "@playwright/test"; import { expect } from "@playwright/test"; -import { Linter } from "eslint"; +import { spawnSync } from "node:child_process"; +import { createRequire } from "node:module"; import { parse } from "node-html-parser"; import { getOrgFullOrigin } from "@calcom/features/ee/organizations/lib/orgDomains"; @@ -9,11 +10,8 @@ import { MembershipRole } from "@calcom/prisma/enums"; import { test } from "./lib/fixtures"; -const linter = new Linter(); -const eslintRules = { - "no-undef": "error", - "no-unused-vars": "off", -} as const; +const nodeRequire = createRequire(__filename); +const biomeBin = nodeRequire.resolve("@biomejs/biome/bin/biome"); test.describe.configure({ mode: "parallel" }); test.afterEach(({ users }) => users.deleteAll()); @@ -431,71 +429,41 @@ async function expectValidHtmlEmbedSnippet( } function assertThatCodeIsValidVanillaJsCode(code: string) { - const lintResult = linter.verify(code, [ - { - languageOptions: { - ecmaVersion: 2021, - sourceType: "module", - parserOptions: { ecmaFeatures: { jsx: true } }, - globals: { - window: "readonly", - document: "readonly", - navigator: "readonly", - Cal: "readonly", - console: "readonly", - }, - }, - rules: eslintRules, - }, - ]); + // Use Biome to check if the code is syntactically valid JavaScript + const result = spawnSync("node", [biomeBin, "format", "--stdin-file-path", "snippet.js"], { + input: code, + encoding: "utf-8", + }); - if (lintResult.length) { + if (result.status !== 0) { console.log( JSON.stringify({ - lintResult, + biomeError: result.stderr, code, }) ); } - expect(lintResult.length).toBe(0); + expect(result.status).toBe(0); } function assertThatCodeIsValidReactCode(code: string) { - const lintResult = linter.verify(code, [ - { - languageOptions: { - ecmaVersion: 2021, - sourceType: "module", - parserOptions: { - ecmaFeatures: { jsx: true }, - }, - globals: { - window: "readonly", - document: "readonly", - navigator: "readonly", - console: "readonly", - }, - }, - rules: { - ...eslintRules, - "@typescript-eslint/no-unused-vars": "off", - "no-undef": "off", - semi: "off", - }, - }, - ]); + // Use Biome to check if the code is syntactically valid JSX + const result = spawnSync("node", [biomeBin, "format", "--stdin-file-path", "snippet.jsx"], { + input: code, + encoding: "utf-8", + }); - if (lintResult.length) { + if (result.status !== 0) { console.log( JSON.stringify({ - lintResult, + biomeError: result.stderr, code, }) ); } - expect(lintResult.length).toBe(0); + expect(result.status).toBe(0); } async function expectValidReactEmbedSnippet( diff --git a/biome.json b/biome.json new file mode 100644 index 0000000000..0eb5301656 --- /dev/null +++ b/biome.json @@ -0,0 +1,188 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.3.8/schema.json", + "root": true, + "css": { + "parser": { + "tailwindDirectives": true + } + }, + "formatter": { + "includes": [ + "**/*", + "!packages/ui/components/icon/dynamicIconImports.tsx", + "!apps/api/v1/tests", + "!apps/api/v1/templates" + ], + "lineWidth": 110, + "indentStyle": "space", + "indentWidth": 2, + "lineEnding": "lf" + }, + "files": { + "includes": [ + "**/*", + "!**/node_modules", + "!**/.next", + "!**/.turbo", + "!**/dist", + "!**/build", + "!**/public", + "!public", + "!apps/web/public/embed", + "!packages/prisma/zod", + "!packages/prisma/enums", + "!*.lock", + "!*.log", + "!.gitignore", + "!.npmignore", + "!.prettierignore", + "!.eslintignore", + "!.DS_Store", + "!coverage", + "!lint-results", + "!test-results" + ] + }, + "javascript": { + "formatter": { + "arrowParentheses": "always", + "bracketSpacing": true, + "bracketSameLine": true, + "quoteStyle": "double", + "jsxQuoteStyle": "double", + "semicolons": "always", + "trailingCommas": "es5" + } + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "style": { + "useNodejsImportProtocol": "warn" + }, + "correctness": { + "noUnusedVariables": { + "level": "warn", + "options": { + "ignoreRestSiblings": true + } + } + } + } + }, + "overrides": [ + { + "includes": ["packages/lib/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "patterns": [ + { + "group": ["../app-store/**"], + "message": "lib package should not import from app-store to avoid circular dependencies." + }, + { + "group": ["../features/**"], + "message": "lib package should not import from features to avoid circular dependencies." + }, + { + "group": ["../trpc/**"], + "message": "lib package should not import from trpc to avoid circular dependencies." + }, + { + "group": ["@trpc/server"], + "message": "lib package should not import from @trpc/server to avoid circular dependencies." + } + ] + } + } + } + } + } + }, + { + "includes": ["packages/app-store/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "patterns": [ + { + "group": ["../features/**"], + "message": "app-store package should not import from features to avoid circular dependencies." + }, + { + "group": ["../trpc/**"], + "message": "app-store package should not import from trpc to avoid circular dependencies." + } + ] + } + } + } + } + } + }, + { + "includes": ["packages/features/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "patterns": [ + { + "group": ["../trpc/**"], + "message": "features package should not import from trpc to avoid circular dependencies." + } + ] + } + } + } + } + } + }, + { + "includes": ["packages/trpc/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"], + "linter": { + "rules": { + "style": { + "noRestrictedImports": { + "level": "error", + "options": { + "patterns": [ + { + "group": ["../apps/web/**"], + "message": "trpc package should not import from apps/web to avoid circular dependencies." + } + ] + } + } + } + } + } + }, + { + "includes": ["companion/**/*.{ts,tsx,js,jsx}"], + "javascript": { + "formatter": { + "lineWidth": 100 + } + } + }, + { + "includes": ["apps/website/lib/utils/wordlist/wordlist.ts"], + "javascript": { + "formatter": { + "quoteProperties": "preserve" + } + } + } + ] +} diff --git a/companion/bun.lock b/companion/bun.lock index 04a41b92c0..94e90c881c 100644 --- a/companion/bun.lock +++ b/companion/bun.lock @@ -1,5 +1,6 @@ { "lockfileVersion": 1, + "configVersion": 0, "workspaces": { "": { "name": "cal-companion", @@ -47,6 +48,8 @@ "@types/react-dom": "19.2.3", "babel-plugin-react-compiler": "19.0.0-beta-af1b7da-20250417", "babel-preset-expo": "54.0.7", + "eslint": "9.28.0", + "eslint-plugin-react-compiler": "19.0.0-beta-af1b7da-20250417", "husky": "9.0.11", "lint-staged": "15.2.0", "tailwindcss": "3.4.17", @@ -65,7 +68,7 @@ "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], - "@babel/code-frame": ["@babel/code-frame@7.10.4", "", { "dependencies": { "@babel/highlight": "^7.10.4" } }, "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg=="], + "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], "@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], @@ -119,6 +122,8 @@ "@babel/plugin-proposal-export-default-from": ["@babel/plugin-proposal-export-default-from@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw=="], + "@babel/plugin-proposal-private-methods": ["@babel/plugin-proposal-private-methods@7.18.6", "", { "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA=="], + "@babel/plugin-syntax-async-generators": ["@babel/plugin-syntax-async-generators@7.8.4", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw=="], "@babel/plugin-syntax-bigint": ["@babel/plugin-syntax-bigint@7.8.3", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg=="], @@ -335,19 +340,19 @@ "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], - "@eslint/config-array": ["@eslint/config-array@0.21.1", "", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA=="], + "@eslint/config-array": ["@eslint/config-array@0.20.1", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw=="], - "@eslint/config-helpers": ["@eslint/config-helpers@0.4.2", "", { "dependencies": { "@eslint/core": "^0.17.0" } }, "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw=="], + "@eslint/config-helpers": ["@eslint/config-helpers@0.2.3", "", {}, "sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg=="], - "@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="], + "@eslint/core": ["@eslint/core@0.14.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg=="], "@eslint/eslintrc": ["@eslint/eslintrc@3.3.3", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ=="], - "@eslint/js": ["@eslint/js@9.39.2", "", {}, "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA=="], + "@eslint/js": ["@eslint/js@9.28.0", "", {}, "sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg=="], "@eslint/object-schema": ["@eslint/object-schema@2.1.7", "", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="], - "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="], + "@eslint/plugin-kit": ["@eslint/plugin-kit@0.3.5", "", { "dependencies": { "@eslint/core": "^0.15.2", "levn": "^0.4.1" } }, "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w=="], "@expo-google-fonts/material-symbols": ["@expo-google-fonts/material-symbols@0.4.15", "", {}, "sha512-EA+HoleZdmUtefeY8a/M8LFK7VapTUyXRIIzP9IkI8Z7DM9r4mVA1omWgoEZp+Tft1jo8dbdnZu38lGOjLohsg=="], @@ -715,7 +720,7 @@ "ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="], + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="], @@ -793,7 +798,7 @@ "bplist-parser": ["bplist-parser@0.3.2", "", { "dependencies": { "big-integer": "1.6.x" } }, "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ=="], - "brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], @@ -825,7 +830,7 @@ "caniuse-lite": ["caniuse-lite@1.0.30001760", "", {}, "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw=="], - "chalk": ["chalk@5.3.0", "", {}, "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w=="], + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], @@ -999,7 +1004,9 @@ "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - "eslint": ["eslint@9.39.2", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.39.2", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw=="], + "eslint": ["eslint@9.28.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.20.0", "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.14.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.28.0", "@eslint/plugin-kit": "^0.3.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ=="], + + "eslint-plugin-react-compiler": ["eslint-plugin-react-compiler@19.0.0-beta-af1b7da-20250417", "", { "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "@babel/plugin-proposal-private-methods": "^7.18.6", "hermes-parser": "^0.25.1", "zod": "^3.22.4", "zod-validation-error": "^3.0.3" }, "peerDependencies": { "eslint": ">=7" } }, "sha512-m3eVzHqtXFtu6rViWx/kBhv9Jcpj+Q4pkfRWyF47TIBa+Jo8DAB90OoeDh0JR896rtG1OXogLKKd+b6lzFup0A=="], "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], @@ -1201,9 +1208,9 @@ "hermes-compiler": ["hermes-compiler@0.14.0", "", {}, "sha512-clxa193o+GYYwykWVFfpHduCATz8fR5jvU7ngXpfKHj+E9hr9vjLNtdLSEe8MUbObvVexV3wcyxQ00xTPIrB1Q=="], - "hermes-estree": ["hermes-estree@0.29.1", "", {}, "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ=="], + "hermes-estree": ["hermes-estree@0.25.1", "", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="], - "hermes-parser": ["hermes-parser@0.29.1", "", { "dependencies": { "hermes-estree": "0.29.1" } }, "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA=="], + "hermes-parser": ["hermes-parser@0.25.1", "", { "dependencies": { "hermes-estree": "0.25.1" } }, "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA=="], "hoist-non-react-statics": ["hoist-non-react-statics@3.3.2", "", { "dependencies": { "react-is": "^16.7.0" } }, "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw=="], @@ -1227,7 +1234,7 @@ "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], - "ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], "image-size": ["image-size@1.2.1", "", { "dependencies": { "queue": "6.0.2" }, "bin": { "image-size": "bin/image-size.js" } }, "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw=="], @@ -1331,7 +1338,7 @@ "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], - "js-tokens": ["js-tokens@9.0.1", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="], + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], @@ -1487,7 +1494,7 @@ "mimic-function": ["mimic-function@5.0.1", "", {}, "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA=="], - "minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], @@ -1881,7 +1888,7 @@ "strip-final-newline": ["strip-final-newline@3.0.0", "", {}, "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw=="], - "strip-json-comments": ["strip-json-comments@5.0.2", "", {}, "sha512-4X2FR3UwhNUE9G49aIsJW5hRRR3GXGTBTZRMfv568O60ojM8HcWjV/VxAxCDW3SUND33O6ZY66ZuRcdkj73q2g=="], + "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], "strip-literal": ["strip-literal@3.1.0", "", { "dependencies": { "js-tokens": "^9.0.1" } }, "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg=="], @@ -1937,7 +1944,7 @@ "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], - "ts-api-utils": ["ts-api-utils@2.2.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-L6f5oQRAoLU1RwXz0Ab9mxsE7LtxeVB6AIR1lpkZMsOyg/JXeaxBaXa/FVCBZyNr9S9I4wkHrlZTklX+im+WMw=="], + "ts-api-utils": ["ts-api-utils@2.3.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-6eg3Y9SF7SsAvGzRHQvvc1skDAhwI4YQ32ui1scxD1Ccr0G5qIIbUBT3pFTKX8kmWIQClHobtUdNuaBgwdfdWg=="], "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], @@ -2087,12 +2094,12 @@ "zip-dir": ["zip-dir@2.0.0", "", { "dependencies": { "async": "^3.2.0", "jszip": "^3.2.2" } }, "sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg=="], - "zod": ["zod@4.1.13", "", {}, "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig=="], + "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + + "zod-validation-error": ["zod-validation-error@3.5.4", "", { "peerDependencies": { "zod": "^3.24.4" } }, "sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw=="], "@aklinker1/rollup-plugin-visualizer/open": ["open@8.4.2", "", { "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" } }, "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="], - "@babel/core/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -2103,36 +2110,20 @@ "@babel/highlight/chalk": ["chalk@2.4.2", "", { "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="], - "@babel/highlight/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-runtime/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "@babel/template/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - - "@babel/traverse/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - - "@babel/traverse--for-generate-function-map/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - "@devicefarmer/adbkit/commander": ["commander@9.5.0", "", {}, "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ=="], "@devicefarmer/adbkit/debug": ["debug@4.3.7", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="], "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], - "@eslint/config-array/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - - "@eslint/eslintrc/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - - "@eslint/eslintrc/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - - "@eslint/eslintrc/strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], + "@eslint/plugin-kit/@eslint/core": ["@eslint/core@0.15.2", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg=="], "@expo/cli/@expo/env": ["@expo/env@2.0.8", "", { "dependencies": { "chalk": "^4.0.0", "debug": "^4.3.4", "dotenv": "~16.4.5", "dotenv-expand": "~11.0.6", "getenv": "^2.0.0" } }, "sha512-5VQD6GT8HIMRaSaB5JFtOXuvfDVU80YtZIuUT/GDhUF782usIXY13Tn3IdDz1Tm/lqA9qnRZQ1BF4t7LlvdJPA=="], "@expo/cli/@expo/schema-utils": ["@expo/schema-utils@0.1.8", "", {}, "sha512-9I6ZqvnAvKKDiO+ZF8BpQQFYWXOJvTAL5L/227RUbWG1OVZDInFifzCBiqAZ3b67NRfeAgpgvbA7rejsqhY62A=="], - "@expo/cli/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "@expo/cli/ci-info": ["ci-info@3.9.0", "", {}, "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ=="], "@expo/cli/glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], @@ -2149,69 +2140,57 @@ "@expo/cli/ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="], + "@expo/config/@babel/code-frame": ["@babel/code-frame@7.10.4", "", { "dependencies": { "@babel/highlight": "^7.10.4" } }, "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg=="], + "@expo/config/glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], "@expo/config/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "@expo/config-plugins/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "@expo/config-plugins/glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], "@expo/config-plugins/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "@expo/devcert/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], - "@expo/devtools/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - - "@expo/env/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "@expo/env/dotenv": ["dotenv@16.4.7", "", {}, "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ=="], "@expo/env/dotenv-expand": ["dotenv-expand@11.0.7", "", { "dependencies": { "dotenv": "^16.4.5" } }, "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA=="], - "@expo/fingerprint/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "@expo/fingerprint/glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], - "@expo/fingerprint/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "@expo/fingerprint/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "@expo/fingerprint/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "@expo/image-utils/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "@expo/image-utils/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "@expo/json-file/@babel/code-frame": ["@babel/code-frame@7.10.4", "", { "dependencies": { "@babel/highlight": "^7.10.4" } }, "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg=="], + "@expo/metro/metro-runtime": ["metro-runtime@0.83.1", "", { "dependencies": { "@babel/runtime": "^7.25.0", "flow-enums-runtime": "^0.0.6" } }, "sha512-3Ag8ZS4IwafL/JUKlaeM6/CbkooY+WcVeqdNlBG0m4S0Qz0om3rdFdy1y6fYBpl6AwXJwWeMuXrvZdMuByTcRA=="], "@expo/metro/metro-source-map": ["metro-source-map@0.83.1", "", { "dependencies": { "@babel/traverse": "^7.25.3", "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", "metro-symbolicate": "0.83.1", "nullthrows": "^1.1.1", "ob1": "0.83.1", "source-map": "^0.5.6", "vlq": "^1.0.0" } }, "sha512-De7Vbeo96fFZ2cqmI0fWwVJbtHIwPZv++LYlWSwzTiCzxBDJORncN0LcT48Vi2UlQLzXJg+/CuTAcy7NBVh69A=="], - "@expo/metro-config/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - "@expo/metro-config/@expo/env": ["@expo/env@2.0.8", "", { "dependencies": { "chalk": "^4.0.0", "debug": "^4.3.4", "dotenv": "~16.4.5", "dotenv-expand": "~11.0.6", "getenv": "^2.0.0" } }, "sha512-5VQD6GT8HIMRaSaB5JFtOXuvfDVU80YtZIuUT/GDhUF782usIXY13Tn3IdDz1Tm/lqA9qnRZQ1BF4t7LlvdJPA=="], - "@expo/metro-config/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "@expo/metro-config/dotenv": ["dotenv@16.4.7", "", {}, "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ=="], "@expo/metro-config/dotenv-expand": ["dotenv-expand@11.0.7", "", { "dependencies": { "dotenv": "^16.4.5" } }, "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA=="], "@expo/metro-config/glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], + "@expo/metro-config/hermes-parser": ["hermes-parser@0.29.1", "", { "dependencies": { "hermes-estree": "0.29.1" } }, "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA=="], + "@expo/metro-config/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "@expo/metro-config/postcss": ["postcss@8.4.49", "", { "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA=="], - "@expo/package-manager/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "@expo/package-manager/ora": ["ora@3.4.0", "", { "dependencies": { "chalk": "^2.4.2", "cli-cursor": "^2.1.0", "cli-spinners": "^2.0.0", "log-symbols": "^2.2.0", "strip-ansi": "^5.2.0", "wcwidth": "^1.0.1" } }, "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg=="], "@expo/prebuild-config/@react-native/normalize-colors": ["@react-native/normalize-colors@0.81.5", "", {}, "sha512-0HuJ8YtqlTVRXGZuGeBejLE04wSQsibpTI+RGOyVqxZvgtlLLC/Ssw0UmbHhT4lYMp2fhdtvKZSs5emWB1zR/g=="], "@expo/prebuild-config/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "@expo/xcpretty/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "@expo/xcpretty/@babel/code-frame": ["@babel/code-frame@7.10.4", "", { "dependencies": { "@babel/highlight": "^7.10.4" } }, "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg=="], "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], @@ -2223,12 +2202,8 @@ "@istanbuljs/load-nyc-config/js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], - "@jest/transform/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "@jest/transform/micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - "@jest/types/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "@pnpm/network.ca-file/graceful-fs": ["graceful-fs@4.2.10", "", {}, "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="], "@radix-ui/react-collection/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], @@ -2261,16 +2236,18 @@ "@react-navigation/core/react-is": ["react-is@19.2.3", "", {}, "sha512-qJNJfu81ByyabuG7hPFEbXqNcWSU3+eVus+KJs+0ncpGfMyYdvSmxiJxbWR65lYi1I+/0HBcliO029gc4F+PnA=="], + "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "@typescript-eslint/typescript-estree/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], "ansi-align/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "babel-jest/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "babel-plugin-polyfill-corejs2/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "babel-plugin-syntax-hermes-parser/hermes-parser": ["hermes-parser@0.29.1", "", { "dependencies": { "hermes-estree": "0.29.1" } }, "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA=="], + "babel-preset-expo/babel-plugin-react-compiler": ["babel-plugin-react-compiler@1.0.0", "", { "dependencies": { "@babel/types": "^7.26.0" } }, "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw=="], "better-opn/open": ["open@8.4.2", "", { "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" } }, "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="], @@ -2323,12 +2300,6 @@ "dotenv-expand/dotenv": ["dotenv@16.4.7", "", {}, "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ=="], - "eslint/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - - "eslint/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - - "eslint/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - "expo/expo-constants": ["expo-constants@18.0.12", "", { "dependencies": { "@expo/config": "~12.0.12", "@expo/env": "~2.0.8" }, "peerDependencies": { "expo": "*", "react-native": "*" } }, "sha512-WzcKYMVNRRu4NcSzfIVRD5aUQFnSpTZgXFrlWmm19xJoDa4S3/PQNi6PNTBRc49xz9h8FT7HMxRKaC8lr0gflA=="], "expo-asset/expo-constants": ["expo-constants@18.0.12", "", { "dependencies": { "@expo/config": "~12.0.12", "@expo/env": "~2.0.8" }, "peerDependencies": { "expo": "*", "react-native": "*" } }, "sha512-WzcKYMVNRRu4NcSzfIVRD5aUQFnSpTZgXFrlWmm19xJoDa4S3/PQNi6PNTBRc49xz9h8FT7HMxRKaC8lr0gflA=="], @@ -2339,8 +2310,6 @@ "expo-manifests/@expo/config": ["@expo/config@12.0.13-canary-20251216-3f01dbf", "", { "dependencies": { "@babel/code-frame": "~7.10.4", "@expo/config-plugins": "54.0.5-canary-20251216-3f01dbf", "@expo/config-types": "55.0.0-canary-20251216-3f01dbf", "@expo/json-file": "10.0.9-canary-20251216-3f01dbf", "deepmerge": "^4.3.1", "getenv": "^2.0.0", "glob": "^13.0.0", "require-from-string": "^2.0.2", "resolve-from": "^5.0.0", "resolve-workspace-root": "^2.0.0", "semver": "^7.6.0", "slugify": "^1.3.4", "sucrase": "~3.35.1" } }, "sha512-c//gL86gImxYqbSMRDyKUPvCWBWGB63JOV0JUtj5LhuKOhlgbo07X2tQPhqAAbzm520EFuAmrUP/HPNe9AS/IQ=="], - "expo-modules-autolinking/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "expo-modules-autolinking/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], "expo-modules-autolinking/glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], @@ -2371,8 +2340,6 @@ "fx-runner/which": ["which@1.2.4", "", { "dependencies": { "is-absolute": "^0.1.7", "isexe": "^1.1.1" }, "bin": { "which": "./bin/which" } }, "sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA=="], - "glob/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - "global-directory/ini": ["ini@4.1.1", "", {}, "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g=="], "global-dirs/ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="], @@ -2389,22 +2356,16 @@ "jest-haste-map/micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - "jest-message-util/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - - "jest-message-util/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "jest-message-util/micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - "jest-util/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "jest-util/ci-info": ["ci-info@3.9.0", "", {}, "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ=="], "jest-validate/camelcase": ["camelcase@6.3.0", "", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="], - "jest-validate/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "jest-worker/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], + "lint-staged/chalk": ["chalk@5.3.0", "", {}, "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w=="], + "lint-staged/debug": ["debug@4.3.4", "", { "dependencies": { "ms": "2.1.2" } }, "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="], "log-symbols/chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], @@ -2413,16 +2374,12 @@ "log-update/slice-ansi": ["slice-ansi@7.1.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w=="], - "loose-envify/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], - "metro/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - - "metro/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "metro/ci-info": ["ci-info@2.0.0", "", {}, "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="], + "metro/hermes-parser": ["hermes-parser@0.29.1", "", { "dependencies": { "hermes-estree": "0.29.1" } }, "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA=="], + "metro/metro-runtime": ["metro-runtime@0.83.1", "", { "dependencies": { "@babel/runtime": "^7.25.0", "flow-enums-runtime": "^0.0.6" } }, "sha512-3Ag8ZS4IwafL/JUKlaeM6/CbkooY+WcVeqdNlBG0m4S0Qz0om3rdFdy1y6fYBpl6AwXJwWeMuXrvZdMuByTcRA=="], "metro/metro-source-map": ["metro-source-map@0.83.1", "", { "dependencies": { "@babel/traverse": "^7.25.3", "@babel/traverse--for-generate-function-map": "npm:@babel/traverse@^7.25.3", "@babel/types": "^7.25.2", "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", "metro-symbolicate": "0.83.1", "nullthrows": "^1.1.1", "ob1": "0.83.1", "source-map": "^0.5.6", "vlq": "^1.0.0" } }, "sha512-De7Vbeo96fFZ2cqmI0fWwVJbtHIwPZv++LYlWSwzTiCzxBDJORncN0LcT48Vi2UlQLzXJg+/CuTAcy7NBVh69A=="], @@ -2431,6 +2388,8 @@ "metro/source-map": ["source-map@0.5.7", "", {}, "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="], + "metro-babel-transformer/hermes-parser": ["hermes-parser@0.29.1", "", { "dependencies": { "hermes-estree": "0.29.1" } }, "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA=="], + "metro-config/metro-runtime": ["metro-runtime@0.83.1", "", { "dependencies": { "@babel/runtime": "^7.25.0", "flow-enums-runtime": "^0.0.6" } }, "sha512-3Ag8ZS4IwafL/JUKlaeM6/CbkooY+WcVeqdNlBG0m4S0Qz0om3rdFdy1y6fYBpl6AwXJwWeMuXrvZdMuByTcRA=="], "metro-file-map/micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], @@ -2443,8 +2402,6 @@ "mlly/pkg-types": ["pkg-types@1.3.1", "", { "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", "pathe": "^2.0.1" } }, "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ=="], - "multimatch/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - "node-notifier/is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], "node-notifier/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], @@ -2457,8 +2414,6 @@ "package-json/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "parse-json/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - "parse-json/lines-and-columns": ["lines-and-columns@2.0.4", "", {}, "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A=="], "parse-json/type-fest": ["type-fest@3.13.1", "", {}, "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g=="], @@ -2469,8 +2424,12 @@ "postcss-load-config/yaml": ["yaml@2.8.2", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A=="], + "pretty-format/ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="], + "publish-browser-extension/listr2": ["listr2@8.3.3", "", { "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", "rfdc": "^1.4.1", "wrap-ansi": "^9.0.0" } }, "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ=="], + "publish-browser-extension/zod": ["zod@4.1.13", "", {}, "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig=="], + "rc/ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="], "rc/strip-json-comments": ["strip-json-comments@2.0.1", "", {}, "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="], @@ -2521,6 +2480,8 @@ "strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + "strip-literal/js-tokens": ["js-tokens@9.0.1", "", {}, "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ=="], + "sucrase/commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], "tailwindcss/lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], @@ -2531,8 +2492,6 @@ "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], - "test-exclude/minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], - "tinyglobby/picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], "unimport/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], @@ -2553,12 +2512,12 @@ "web-ext-run/@babel/runtime": ["@babel/runtime@7.28.2", "", {}, "sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA=="], + "web-ext-run/strip-json-comments": ["strip-json-comments@5.0.2", "", {}, "sha512-4X2FR3UwhNUE9G49aIsJW5hRRR3GXGTBTZRMfv568O60ojM8HcWjV/VxAxCDW3SUND33O6ZY66ZuRcdkj73q2g=="], + "whatwg-url/webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], "wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], - "wrap-ansi-cjs/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "wrap-ansi-cjs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], "wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], @@ -2567,6 +2526,8 @@ "wxt/chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], + "wxt/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + "xcode/uuid": ["uuid@7.0.3", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg=="], "xml2js/xmlbuilder": ["xmlbuilder@11.0.1", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="], @@ -2577,29 +2538,17 @@ "@aklinker1/rollup-plugin-visualizer/open/is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], - "@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/highlight/chalk/ansi-styles": ["ansi-styles@3.2.1", "", { "dependencies": { "color-convert": "^1.9.0" } }, "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="], "@babel/highlight/chalk/escape-string-regexp": ["escape-string-regexp@1.0.5", "", {}, "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="], "@babel/highlight/chalk/supports-color": ["supports-color@5.5.0", "", { "dependencies": { "has-flag": "^3.0.0" } }, "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="], - "@babel/template/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - - "@babel/traverse--for-generate-function-map/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - - "@babel/traverse/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - - "@eslint/config-array/minimatch/brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], - - "@eslint/eslintrc/minimatch/brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], - "@expo/cli/@expo/env/dotenv": ["dotenv@16.4.7", "", {}, "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ=="], "@expo/cli/@expo/env/dotenv-expand": ["dotenv-expand@11.0.7", "", { "dependencies": { "dotenv": "^16.4.5" } }, "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA=="], - "@expo/cli/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "@expo/cli/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], "@expo/cli/ora/chalk": ["chalk@2.4.2", "", { "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="], @@ -2609,29 +2558,23 @@ "@expo/cli/ora/strip-ansi": ["strip-ansi@5.2.0", "", { "dependencies": { "ansi-regex": "^4.1.0" } }, "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="], - "@expo/cli/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "@expo/cli/wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], "@expo/cli/wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "@expo/config-plugins/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "@expo/config-plugins/glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], "@expo/config-plugins/glob/path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], + "@expo/config/glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], + "@expo/config/glob/path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], - "@expo/devtools/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "@expo/fingerprint/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], - "@expo/env/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "@expo/metro-config/hermes-parser/hermes-estree": ["hermes-estree@0.29.1", "", {}, "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ=="], - "@expo/fingerprint/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - - "@expo/image-utils/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - - "@expo/metro-config/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - - "@expo/metro-config/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "@expo/metro-config/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], "@expo/metro/metro-source-map/metro-symbolicate": ["metro-symbolicate@0.83.1", "", { "dependencies": { "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", "metro-source-map": "0.83.1", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "vlq": "^1.0.0" }, "bin": { "metro-symbolicate": "src/index.js" } }, "sha512-wPxYkONlq/Sv8Ji7vHEx5OzFouXAMQJjpcPW41ySKMLP/Ir18SsiJK2h4YkdKpYrTS1+0xf8oqF6nxCsT3uWtg=="], @@ -2639,8 +2582,6 @@ "@expo/metro/metro-source-map/source-map": ["source-map@0.5.7", "", {}, "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="], - "@expo/package-manager/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "@expo/package-manager/ora/chalk": ["chalk@2.4.2", "", { "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="], "@expo/package-manager/ora/cli-cursor": ["cli-cursor@2.1.0", "", { "dependencies": { "restore-cursor": "^2.0.0" } }, "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw=="], @@ -2649,8 +2590,6 @@ "@expo/package-manager/ora/strip-ansi": ["strip-ansi@5.2.0", "", { "dependencies": { "ansi-regex": "^4.1.0" } }, "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="], - "@expo/xcpretty/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], @@ -2659,9 +2598,7 @@ "@istanbuljs/load-nyc-config/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], - "@jest/transform/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - - "@jest/types/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "@react-native/babel-plugin-codegen/@react-native/codegen/hermes-parser": ["hermes-parser@0.29.1", "", { "dependencies": { "hermes-estree": "0.29.1" } }, "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA=="], "@react-native/codegen/hermes-parser/hermes-estree": ["hermes-estree@0.32.0", "", {}, "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ=="], @@ -2671,10 +2608,6 @@ "@react-native/community-cli-plugin/@react-native/dev-middleware/open": ["open@7.4.2", "", { "dependencies": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" } }, "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q=="], - "@react-native/community-cli-plugin/metro/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - - "@react-native/community-cli-plugin/metro/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "@react-native/community-cli-plugin/metro/ci-info": ["ci-info@2.0.0", "", {}, "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="], "@react-native/community-cli-plugin/metro/hermes-parser": ["hermes-parser@0.32.0", "", { "dependencies": { "hermes-estree": "0.32.0" } }, "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw=="], @@ -2707,11 +2640,13 @@ "@react-native/dev-middleware/open/is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], + "ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "babel-jest/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "babel-plugin-syntax-hermes-parser/hermes-parser/hermes-estree": ["hermes-estree@0.29.1", "", {}, "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ=="], "better-opn/open/define-lazy-prop": ["define-lazy-prop@2.0.0", "", {}, "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="], @@ -2723,8 +2658,6 @@ "cliui/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - "cliui/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "compression/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], "connect/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], @@ -2733,12 +2666,10 @@ "cosmiconfig/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], - "eslint/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - - "eslint/minimatch/brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], - "expo-asset/expo-constants/@expo/env": ["@expo/env@2.0.8", "", { "dependencies": { "chalk": "^4.0.0", "debug": "^4.3.4", "dotenv": "~16.4.5", "dotenv-expand": "~11.0.6", "getenv": "^2.0.0" } }, "sha512-5VQD6GT8HIMRaSaB5JFtOXuvfDVU80YtZIuUT/GDhUF782usIXY13Tn3IdDz1Tm/lqA9qnRZQ1BF4t7LlvdJPA=="], + "expo-constants/@expo/config/@babel/code-frame": ["@babel/code-frame@7.10.4", "", { "dependencies": { "@babel/highlight": "^7.10.4" } }, "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg=="], + "expo-constants/@expo/config/@expo/config-plugins": ["@expo/config-plugins@54.0.5-canary-20251216-3f01dbf", "", { "dependencies": { "@expo/config-types": "55.0.0-canary-20251216-3f01dbf", "@expo/json-file": "10.0.9-canary-20251216-3f01dbf", "@expo/plist": "0.4.9-canary-20251216-3f01dbf", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", "getenv": "^2.0.0", "glob": "^13.0.0", "resolve-from": "^5.0.0", "semver": "^7.5.4", "slash": "^3.0.0", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" } }, "sha512-lsE9UoBVb2couRNFRin1iy7phwjPSPEkqx0ftLE7LPeDjW80Js0CfSvGbvQ+L0qEYwEUl8GNYwzpLpLqesNdjw=="], "expo-constants/@expo/config/@expo/config-types": ["@expo/config-types@55.0.0-canary-20251216-3f01dbf", "", {}, "sha512-BcP8G9UMKSkXkKakv4Lhb9j77nH6ERs/QwRQRMAqIw+ql09SDlSaiNSogOdLNvqTGDuZtkYVL5eKQ7a8+dkDkg=="], @@ -2751,6 +2682,8 @@ "expo-dev-launcher/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + "expo-manifests/@expo/config/@babel/code-frame": ["@babel/code-frame@7.10.4", "", { "dependencies": { "@babel/highlight": "^7.10.4" } }, "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg=="], + "expo-manifests/@expo/config/@expo/config-plugins": ["@expo/config-plugins@54.0.5-canary-20251216-3f01dbf", "", { "dependencies": { "@expo/config-types": "55.0.0-canary-20251216-3f01dbf", "@expo/json-file": "10.0.9-canary-20251216-3f01dbf", "@expo/plist": "0.4.9-canary-20251216-3f01dbf", "@expo/sdk-runtime-versions": "^1.0.0", "chalk": "^4.1.2", "debug": "^4.3.5", "getenv": "^2.0.0", "glob": "^13.0.0", "resolve-from": "^5.0.0", "semver": "^7.5.4", "slash": "^3.0.0", "slugify": "^1.6.6", "xcode": "^3.0.1", "xml2js": "0.6.0" } }, "sha512-lsE9UoBVb2couRNFRin1iy7phwjPSPEkqx0ftLE7LPeDjW80Js0CfSvGbvQ+L0qEYwEUl8GNYwzpLpLqesNdjw=="], "expo-manifests/@expo/config/@expo/config-types": ["@expo/config-types@55.0.0-canary-20251216-3f01dbf", "", {}, "sha512-BcP8G9UMKSkXkKakv4Lhb9j77nH6ERs/QwRQRMAqIw+ql09SDlSaiNSogOdLNvqTGDuZtkYVL5eKQ7a8+dkDkg=="], @@ -2761,8 +2694,6 @@ "expo-manifests/@expo/config/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "expo-modules-autolinking/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "expo-modules-autolinking/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "expo/expo-constants/@expo/env": ["@expo/env@2.0.8", "", { "dependencies": { "chalk": "^4.0.0", "debug": "^4.3.4", "dotenv": "~16.4.5", "dotenv-expand": "~11.0.6", "getenv": "^2.0.0" } }, "sha512-5VQD6GT8HIMRaSaB5JFtOXuvfDVU80YtZIuUT/GDhUF782usIXY13Tn3IdDz1Tm/lqA9qnRZQ1BF4t7LlvdJPA=="], @@ -2773,40 +2704,26 @@ "fx-runner/which/isexe": ["isexe@1.1.2", "", {}, "sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw=="], - "glob/minimatch/brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], - - "jest-message-util/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - - "jest-message-util/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - - "jest-util/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - - "jest-validate/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "lint-staged/debug/ms": ["ms@2.1.2", "", {}, "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="], "log-update/slice-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], "log-update/slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="], + "metro-babel-transformer/hermes-parser/hermes-estree": ["hermes-estree@0.29.1", "", {}, "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ=="], + "metro-transform-worker/metro-source-map/metro-symbolicate": ["metro-symbolicate@0.83.1", "", { "dependencies": { "flow-enums-runtime": "^0.0.6", "invariant": "^2.2.4", "metro-source-map": "0.83.1", "nullthrows": "^1.1.1", "source-map": "^0.5.6", "vlq": "^1.0.0" }, "bin": { "metro-symbolicate": "src/index.js" } }, "sha512-wPxYkONlq/Sv8Ji7vHEx5OzFouXAMQJjpcPW41ySKMLP/Ir18SsiJK2h4YkdKpYrTS1+0xf8oqF6nxCsT3uWtg=="], "metro-transform-worker/metro-source-map/ob1": ["ob1@0.83.1", "", { "dependencies": { "flow-enums-runtime": "^0.0.6" } }, "sha512-ngwqewtdUzFyycomdbdIhFLjePPSOt1awKMUXQ0L7iLHgWEPF3DsCerblzjzfAUHaXuvE9ccJymWQ/4PNNqvnQ=="], "metro-transform-worker/metro-source-map/source-map": ["source-map@0.5.7", "", {}, "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="], - "metro/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - - "metro/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], + "metro/hermes-parser/hermes-estree": ["hermes-estree@0.29.1", "", {}, "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ=="], "metro/metro-source-map/ob1": ["ob1@0.83.1", "", { "dependencies": { "flow-enums-runtime": "^0.0.6" } }, "sha512-ngwqewtdUzFyycomdbdIhFLjePPSOt1awKMUXQ0L7iLHgWEPF3DsCerblzjzfAUHaXuvE9ccJymWQ/4PNNqvnQ=="], "mlly/pkg-types/confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], - "multimatch/minimatch/brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], - - "parse-json/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "react-native-css-interop/lightningcss/detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], "react-native-css-interop/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.27.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ=="], @@ -2839,8 +2756,6 @@ "terminal-link/ansi-escapes/type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], - "test-exclude/minimatch/brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], - "wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "wxt/chokidar/readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], @@ -2881,16 +2796,14 @@ "@istanbuljs/load-nyc-config/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], + "@react-native/babel-plugin-codegen/@react-native/codegen/hermes-parser/hermes-estree": ["hermes-estree@0.29.1", "", {}, "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ=="], + "@react-native/community-cli-plugin/@react-native/dev-middleware/chrome-launcher/is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], "@react-native/community-cli-plugin/@react-native/dev-middleware/chrome-launcher/lighthouse-logger": ["lighthouse-logger@1.4.2", "", { "dependencies": { "debug": "^2.6.9", "marky": "^1.2.2" } }, "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g=="], "@react-native/community-cli-plugin/@react-native/dev-middleware/open/is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], - "@react-native/community-cli-plugin/metro/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - - "@react-native/community-cli-plugin/metro/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "@react-native/community-cli-plugin/metro/hermes-parser/hermes-estree": ["hermes-estree@0.32.0", "", {}, "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ=="], "@react-native/community-cli-plugin/metro/metro-file-map/micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], @@ -2901,25 +2814,23 @@ "chromium-edge-launcher/lighthouse-logger/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - "expo-asset/expo-constants/@expo/env/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "expo-asset/expo-constants/@expo/env/dotenv": ["dotenv@16.4.7", "", {}, "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ=="], "expo-asset/expo-constants/@expo/env/dotenv-expand": ["dotenv-expand@11.0.7", "", { "dependencies": { "dotenv": "^16.4.5" } }, "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA=="], "expo-constants/@expo/config/@expo/config-plugins/@expo/plist": ["@expo/plist@0.4.9-canary-20251216-3f01dbf", "", { "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" } }, "sha512-3/kYP08yrjXhpClr7tau8oSeimDZv0SNl6WxurUWhVgzH3pyA5gU0h1WwH5A0LUiyPUHcP9Osf20dZzfpB82Jg=="], - "expo-constants/@expo/config/@expo/config-plugins/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "expo-constants/@expo/config/glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], "expo-constants/@expo/config/glob/path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], "expo-manifests/@expo/config/@expo/config-plugins/@expo/plist": ["@expo/plist@0.4.9-canary-20251216-3f01dbf", "", { "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" } }, "sha512-3/kYP08yrjXhpClr7tau8oSeimDZv0SNl6WxurUWhVgzH3pyA5gU0h1WwH5A0LUiyPUHcP9Osf20dZzfpB82Jg=="], - "expo-manifests/@expo/config/@expo/config-plugins/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "expo-manifests/@expo/config/glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], "expo-manifests/@expo/config/glob/path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], - "expo/expo-constants/@expo/env/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "expo-modules-autolinking/glob/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], "expo/expo-constants/@expo/env/dotenv": ["dotenv@16.4.7", "", {}, "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ=="], @@ -2953,18 +2864,10 @@ "@react-native/dev-middleware/chrome-launcher/lighthouse-logger/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], - "expo-asset/expo-constants/@expo/env/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - - "expo-constants/@expo/config/@expo/config-plugins/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "expo-constants/@expo/config/glob/path-scurry/lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="], - "expo-manifests/@expo/config/@expo/config-plugins/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "expo-manifests/@expo/config/glob/path-scurry/lru-cache": ["lru-cache@11.2.4", "", {}, "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg=="], - "expo/expo-constants/@expo/env/chalk/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - "@expo/cli/ora/chalk/ansi-styles/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="], "@expo/cli/ora/cli-cursor/restore-cursor/onetime/mimic-fn": ["mimic-fn@1.2.0", "", {}, "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="], diff --git a/companion/package.json b/companion/package.json index 609bcedaed..fe55c0e52f 100644 --- a/companion/package.json +++ b/companion/package.json @@ -87,20 +87,22 @@ "react-native-worklets": "0.7.1" }, "private": true, - "devDependencies": { - "@biomejs/biome": "2.3.10", - "@types/chrome": "0.1.31", - "@types/react": "19.2.3", - "@types/react-dom": "19.2.3", - "babel-plugin-react-compiler": "19.0.0-beta-af1b7da-20250417", - "babel-preset-expo": "54.0.7", - "husky": "9.0.11", - "lint-staged": "15.2.0", - "tailwindcss": "3.4.17", - "typescript": "5.9.3", - "typescript-eslint": "8.50.1", - "wxt": "0.20.11" - }, + "devDependencies": { + "@biomejs/biome": "2.3.10", + "@types/chrome": "0.1.31", + "@types/react": "19.2.3", + "@types/react-dom": "19.2.3", + "babel-plugin-react-compiler": "19.0.0-beta-af1b7da-20250417", + "babel-preset-expo": "54.0.7", + "eslint": "9.28.0", + "eslint-plugin-react-compiler": "19.0.0-beta-af1b7da-20250417", + "husky": "9.0.11", + "lint-staged": "15.2.0", + "tailwindcss": "3.4.17", + "typescript": "5.9.3", + "typescript-eslint": "8.50.1", + "wxt": "0.20.11" + }, "lint-staged": { "**/*.{js,jsx,ts,tsx,json,css,md}": [ "biome format --write" diff --git a/docs/developing/open-source-contribution/code-styling.mdx b/docs/developing/open-source-contribution/code-styling.mdx index 25200b13eb..6248172902 100644 --- a/docs/developing/open-source-contribution/code-styling.mdx +++ b/docs/developing/open-source-contribution/code-styling.mdx @@ -9,8 +9,8 @@ We use a number of style guides written by other amazing companies, simply becau We don't expect you to study every single rule of each style guide, but these are great reference points as to how your code should be styled. We may reject a pull request if your code style significantly differs from these style guides however. -### ESLint & Prettier -Cal.com uses the ESLint and Prettier formatting tools, and the repository comes with defined rules for each tool. We recommend setting up both tools and using these to help automatically style your code to our guidelines. +### Biome +Cal.com now uses Biome for both linting and formatting. The repository already contains the configuration, so we recommend hooking Biome into your editor to keep code aligned with the project guidelines automatically. ### JavaScript/TypeScript We use the diff --git a/eslint.config.mjs b/eslint.config.mjs deleted file mode 100644 index af72d61cc0..0000000000 --- a/eslint.config.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { config } from "@calcom/eslint-config/base"; - -export default config; diff --git a/example-apps/credential-sync/eslint.config.mjs b/example-apps/credential-sync/eslint.config.mjs deleted file mode 100644 index e08e866e1b..0000000000 --- a/example-apps/credential-sync/eslint.config.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { nextJsConfig } from "@calcom/eslint-config/next-js"; - -export default nextJsConfig; diff --git a/example-apps/credential-sync/package.json b/example-apps/credential-sync/package.json index cf77bed484..fd455c0409 100644 --- a/example-apps/credential-sync/package.json +++ b/example-apps/credential-sync/package.json @@ -6,11 +6,10 @@ "dev": "PORT=5100 next dev", "build": "next build", "start": "next start", - "lint": "eslint ." + "lint": "biome lint ." }, "dependencies": { "@calcom/atoms": "workspace:*", - "@calcom/eslint-config": "workspace:*", "@prisma/client": "6.16.1", "next": "14.2.35", "prisma": "6.16.1", diff --git a/example-apps/credential-sync/pages/api/setTokenInCalCom.ts b/example-apps/credential-sync/pages/api/setTokenInCalCom.ts index ac957b6a1d..6554251297 100644 --- a/example-apps/credential-sync/pages/api/setTokenInCalCom.ts +++ b/example-apps/credential-sync/pages/api/setTokenInCalCom.ts @@ -11,9 +11,9 @@ import { import { generateGoogleCalendarAccessToken, generateZoomAccessToken } from "../../lib/integrations"; export default async function handler(req: NextApiRequest, res) { - const isInvalid = req.query["invalid"] === "1"; - const userId = parseInt(req.query["userId"] as string); - const appSlug = req.query["appSlug"]; + const isInvalid = req.query.invalid === "1"; + const userId = parseInt(req.query.userId as string, 10); + const appSlug = req.query.appSlug; try { let accessToken; diff --git a/lint-staged.config.mjs b/lint-staged.config.mjs index 453a922a69..fe534bd17b 100644 --- a/lint-staged.config.mjs +++ b/lint-staged.config.mjs @@ -1,8 +1,10 @@ +const skipWarnings = ["1", "true", "yes", "on"].includes((process.env.SKIP_WARNINGS ?? "").toLowerCase()); + export default { - "(apps|packages)/**/*.{js,ts,jsx,tsx}": (files) => - process.env.SKIP_WARNINGS === "1" - ? `eslint --fix --flag v10_config_lookup_from_file ${files.join(" ")}` - : `eslint --fix --flag v10_config_lookup_from_file --max-warnings=0 ${files.join(" ")}`, - "*.json": ["prettier --write"], + "(apps|packages|companion)/**/*.{js,ts,jsx,tsx}": (files) => + skipWarnings + ? `biome lint --write ${files.join(" ")}` + : `biome lint --write --error-on-warnings ${files.join(" ")}`, + "*.json": (files) => `biome format --write ${files.join(" ")}`, "packages/prisma/schema.prisma": ["prisma format"], }; diff --git a/package.json b/package.json index 60fdc671e6..731198f723 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "embed-tests": "turbo run embed-tests", "env-check:app-store": "dotenv-checker --schema .env.appStore.example --env .env.appStore", "env-check:common": "dotenv-checker --schema .env.example --env .env", - "format": "prettier --write \"**/*.{ts,tsx,md}\"", + "format": "biome format --write .", "heroku-postbuild": "turbo run @calcom/web#build", "lint:fix": "turbo lint:fix", "lint:report": "turbo lint:report", @@ -85,7 +85,7 @@ "lint-staged": "lint-staged" }, "devDependencies": { - "@calcom/eslint-config": "workspace:*", + "@biomejs/biome": "^2.3.8", "@changesets/changelog-github": "0.5.1", "@changesets/cli": "2.29.4", "@faker-js/faker": "9.2.0", @@ -99,7 +99,6 @@ "c8": "7.13.0", "checkly": "latest", "dotenv-checker": "1.1.5", - "eslint": "9.36.0", "husky": "9.1.7", "i18n-unused": "0.13.0", "jest-diff": "29.7.0", @@ -109,7 +108,6 @@ "next-router-mock": "0.9.12", "node-gyp": "10.2.0", "node-ical": "0.16.1", - "prettier": "2.8.7", "prismock": "1.35.3", "resize-observer-polyfill": "1.5.1", "tsc-absolute": "1.0.0", diff --git a/packages/app-store-cli/package.json b/packages/app-store-cli/package.json index fde5f18eeb..d9f74446ad 100644 --- a/packages/app-store-cli/package.json +++ b/packages/app-store-cli/package.json @@ -26,10 +26,9 @@ "react": "18.2.0" }, "devDependencies": { + "@biomejs/biome": "^2.3.8", "@types/react": "18.0.26", "chokidar": "3.6.0", - "eslint-plugin-react": "7.37.5", - "eslint-plugin-react-hooks": "4.6.0", "ts-node": "10.9.2", "typescript": "5.9.2" } diff --git a/packages/app-store-cli/src/build.ts b/packages/app-store-cli/src/build.ts index 06fb4e8511..b6c28e2cfe 100644 --- a/packages/app-store-cli/src/build.ts +++ b/packages/app-store-cli/src/build.ts @@ -2,12 +2,8 @@ import chokidar from "chokidar"; import fs from "fs"; // eslint-disable-next-line no-restricted-imports import { debounce } from "lodash"; +import { spawnSync } from "child_process"; import path from "path"; -import prettier from "prettier"; - -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -//@ts-ignore -import prettierConfig from "@calcom/config/prettier-preset"; import type { AppMeta } from "@calcom/types/App"; import { AppMetaSchema } from "@calcom/types/AppMetaSchema"; @@ -16,16 +12,30 @@ import { getAppName } from "./utils/getAppName"; const isInWatchMode = process.argv[2] === "--watch"; -const formatOutput = (source: string) => - prettier.format(source, { - parser: "babel", - ...prettierConfig, - }); +const repoRoot = path.resolve(__dirname, "../../.."); -const getVariableName = (appName: string) => appName.replace(/[-.\/]/g, "_"); +const formatFileWithBiome = (filePath: string) => { + const { status } = spawnSync( + "yarn", + ["biome", "format", "--write", "--no-errors-on-unmatched", filePath], + { + stdio: "inherit", + cwd: repoRoot, + } + ); + + if (status !== 0) { + throw new Error(`Biome formatting failed for ${filePath}`); + } +}; + +const formatOutput = (source: string) => source; + +const getVariableName = (appName: string) => appName.replace(/[-./]/g, "_"); // INFO: Handle stripe separately as it's an old app with different dirName than slug/appId -const getAppId = (app: { name: string }) => (app.name === "stripepayment" ? "stripe" : app.name); +const getAppId = (app: { name: string }) => + app.name === "stripepayment" ? "stripe" : app.name; type App = Partial & { name: string; @@ -41,9 +51,9 @@ function generateFiles() { const crmOutput = []; const appDirs: { name: string; path: string }[] = []; - fs.readdirSync(`${APP_STORE_PATH}`).forEach(function (dir) { + fs.readdirSync(`${APP_STORE_PATH}`).forEach((dir) => { if (dir === "ee" || dir === "templates") { - fs.readdirSync(path.join(APP_STORE_PATH, dir)).forEach(function (subDir) { + fs.readdirSync(path.join(APP_STORE_PATH, dir)).forEach((subDir) => { if (fs.statSync(path.join(APP_STORE_PATH, dir, subDir)).isDirectory()) { if (getAppName(subDir)) { appDirs.push({ @@ -66,11 +76,22 @@ function generateFiles() { } }); - function forEachAppDir(callback: (arg: App) => void, filter: (arg: App) => boolean = () => true) { + function forEachAppDir( + callback: (arg: App) => void, + filter: (arg: App) => boolean = () => true + ) { for (let i = 0; i < appDirs.length; i++) { - const configPath = path.join(APP_STORE_PATH, appDirs[i].path, "config.json"); - const metadataPath = path.join(APP_STORE_PATH, appDirs[i].path, "_metadata.ts"); - let app; + const configPath = path.join( + APP_STORE_PATH, + appDirs[i].path, + "config.json" + ); + const metadataPath = path.join( + APP_STORE_PATH, + appDirs[i].path, + "_metadata.ts" + ); + let app: AppMetaSchema; if (fs.existsSync(configPath)) { try { @@ -78,8 +99,16 @@ function generateFiles() { const parsedConfig = JSON.parse(rawConfig); app = AppMetaSchema.parse(parsedConfig); } catch (error) { - const prefix = `Config error in ${path.join(APP_STORE_PATH, appDirs[i].path, "config.json")}`; - throw new Error(`${prefix}: ${error instanceof Error ? error.message : String(error)}`); + const prefix = `Config error in ${path.join( + APP_STORE_PATH, + appDirs[i].path, + "config.json" + )}`; + throw new Error( + `${prefix}: ${ + error instanceof Error ? error.message : String(error) + }` + ); } } else if (fs.existsSync(metadataPath)) { // eslint-disable-next-line @typescript-eslint/no-var-requires @@ -148,12 +177,18 @@ function generateFiles() { const getLocalImportName = ( app: { name: string }, chosenConfig: ReturnType - ) => `${getVariableName(app.name)}_${getVariableName(chosenConfig.fileToBeImported)}`; + ) => + `${getVariableName(app.name)}_${getVariableName( + chosenConfig.fileToBeImported + )}`; const fileToBeImportedExists = ( app: { path: string }, chosenConfig: ReturnType - ) => fs.existsSync(path.join(APP_STORE_PATH, app.path, chosenConfig.fileToBeImported)); + ) => + fs.existsSync( + path.join(APP_STORE_PATH, app.path, chosenConfig.fileToBeImported) + ); addImportStatements(); createExportObject(); @@ -163,13 +198,19 @@ function generateFiles() { function addImportStatements() { forEachAppDir((app) => { const chosenConfig = getChosenImportConfig(importConfig, app); - if (fileToBeImportedExists(app, chosenConfig) && chosenConfig.importName) { + if ( + fileToBeImportedExists(app, chosenConfig) && + chosenConfig.importName + ) { const importName = chosenConfig.importName; if (!lazyImport) { if (importName !== "default") { // Import with local alias that will be used by createExportObject output.push( - `import { ${importName} as ${getLocalImportName(app, chosenConfig)} } from "${getModulePath( + `import { ${importName} as ${getLocalImportName( + app, + chosenConfig + )} } from "${getModulePath( app.path, chosenConfig.fileToBeImported )}"` @@ -177,7 +218,10 @@ function generateFiles() { } else { // Default Import output.push( - `import ${getLocalImportName(app, chosenConfig)} from "${getModulePath( + `import ${getLocalImportName( + app, + chosenConfig + )} from "${getModulePath( app.path, chosenConfig.fileToBeImported )}"` @@ -208,7 +252,12 @@ function generateFiles() { )}")),` ); } else { - output.push(`"${key}": import("${getModulePath(app.path, chosenConfig.fileToBeImported)}"),`); + output.push( + `"${key}": import("${getModulePath( + app.path, + chosenConfig.fileToBeImported + )}"),` + ); } } } @@ -217,13 +266,24 @@ function generateFiles() { output.push(`};`); } - function getChosenImportConfig(importConfig: ImportConfig, app: { path: string }) { - let chosenConfig; + function getChosenImportConfig( + importConfig: ImportConfig, + app: { path: string } + ) { + let chosenConfig: ImportConfig; - if (!(importConfig instanceof Array)) { + if (!Array.isArray(importConfig)) { chosenConfig = importConfig; } else { - if (fs.existsSync(path.join(APP_STORE_PATH, app.path, importConfig[0].fileToBeImported))) { + if ( + fs.existsSync( + path.join( + APP_STORE_PATH, + app.path, + importConfig[0].fileToBeImported + ) + ) + ) { chosenConfig = importConfig[0]; } else { chosenConfig = importConfig[1]; @@ -409,7 +469,10 @@ function generateFiles() { ); if (analyticsExportLineIndex !== -1) { const exportLine = analyticsServices[analyticsExportLineIndex]; - const objectContent = analyticsServices.slice(analyticsExportLineIndex + 1, -1); + const objectContent = analyticsServices.slice( + analyticsExportLineIndex + 1, + -1 + ); analyticsOutput.push( exportLine.replace( @@ -434,7 +497,9 @@ function generateFiles() { lazyImport: true, }, (app: App) => { - const hasPaymentService = fs.existsSync(path.join(APP_STORE_PATH, app.path, "lib/PaymentService.ts")); + const hasPaymentService = fs.existsSync( + path.join(APP_STORE_PATH, app.path, "lib/PaymentService.ts") + ); return hasPaymentService; } ); @@ -452,7 +517,9 @@ function generateFiles() { lazyImport: true, }, (app: App) => { - return fs.existsSync(path.join(APP_STORE_PATH, app.path, "lib/VideoApiAdapter.ts")); + return fs.existsSync( + path.join(APP_STORE_PATH, app.path, "lib/VideoApiAdapter.ts") + ); } ); @@ -494,9 +561,13 @@ function generateFiles() { ["video.adapters.generated.ts", videoOutput], ]; filesToGenerate.forEach(([fileName, output]) => { - fs.writeFileSync(`${APP_STORE_PATH}/${fileName}`, formatOutput(`${banner}${output.join("\n")}`)); + const filePath = `${APP_STORE_PATH}/${fileName}`; + fs.writeFileSync(filePath, formatOutput(`${banner}${output.join("\n")}`)); + formatFileWithBiome(filePath); }); - console.log(`Generated ${filesToGenerate.map(([fileName]) => fileName).join(", ")}`); + console.log( + `Generated ${filesToGenerate.map(([fileName]) => fileName).join(", ")}` + ); } const debouncedGenerateFiles = debounce(generateFiles); diff --git a/packages/app-store/.prettierignore b/packages/app-store/.prettierignore deleted file mode 100644 index 90d705ae1c..0000000000 --- a/packages/app-store/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -*.generated.* \ No newline at end of file diff --git a/packages/app-store/apps.browser.generated.tsx b/packages/app-store/apps.browser.generated.tsx index 637e206389..1bbd92de0c 100644 --- a/packages/app-store/apps.browser.generated.tsx +++ b/packages/app-store/apps.browser.generated.tsx @@ -5,67 +5,148 @@ import dynamic from "next/dynamic"; export const InstallAppButtonMap = { - exchange2013calendar: dynamic(() => import("./exchange2013calendar/components/InstallAppButton")), - exchange2016calendar: dynamic(() => import("./exchange2016calendar/components/InstallAppButton")), - office365video: dynamic(() => import("./office365video/components/InstallAppButton")), + exchange2013calendar: dynamic( + () => import("./exchange2013calendar/components/InstallAppButton") + ), + exchange2016calendar: dynamic( + () => import("./exchange2016calendar/components/InstallAppButton") + ), + office365video: dynamic( + () => import("./office365video/components/InstallAppButton") + ), vital: dynamic(() => import("./vital/components/InstallAppButton")), }; + export const AppSettingsComponentsMap = { - "general-app-settings": dynamic(() => - import("./templates/general-app-settings/components/AppSettingsInterface") + "general-app-settings": dynamic( + () => + import("./templates/general-app-settings/components/AppSettingsInterface") ), - weather_in_your_calendar: dynamic(() => - import("./weather_in_your_calendar/components/AppSettingsInterface") + weather_in_your_calendar: dynamic( + () => import("./weather_in_your_calendar/components/AppSettingsInterface") ), zapier: dynamic(() => import("./zapier/components/AppSettingsInterface")), }; + export const EventTypeAddonMap = { alby: dynamic(() => import("./alby/components/EventTypeAppCardInterface")), - basecamp3: dynamic(() => import("./basecamp3/components/EventTypeAppCardInterface")), - btcpayserver: dynamic(() => import("./btcpayserver/components/EventTypeAppCardInterface")), - closecom: dynamic(() => import("./closecom/components/EventTypeAppCardInterface")), - databuddy: dynamic(() => import("./databuddy/components/EventTypeAppCardInterface")), - fathom: dynamic(() => import("./fathom/components/EventTypeAppCardInterface")), + basecamp3: dynamic( + () => import("./basecamp3/components/EventTypeAppCardInterface") + ), + btcpayserver: dynamic( + () => import("./btcpayserver/components/EventTypeAppCardInterface") + ), + closecom: dynamic( + () => import("./closecom/components/EventTypeAppCardInterface") + ), + databuddy: dynamic( + () => import("./databuddy/components/EventTypeAppCardInterface") + ), + fathom: dynamic( + () => import("./fathom/components/EventTypeAppCardInterface") + ), ga4: dynamic(() => import("./ga4/components/EventTypeAppCardInterface")), giphy: dynamic(() => import("./giphy/components/EventTypeAppCardInterface")), gtm: dynamic(() => import("./gtm/components/EventTypeAppCardInterface")), - hitpay: dynamic(() => import("./hitpay/components/EventTypeAppCardInterface")), - hubspot: dynamic(() => import("./hubspot/components/EventTypeAppCardInterface")), - insihts: dynamic(() => import("./insihts/components/EventTypeAppCardInterface")), - matomo: dynamic(() => import("./matomo/components/EventTypeAppCardInterface")), - metapixel: dynamic(() => import("./metapixel/components/EventTypeAppCardInterface")), - "mock-payment-app": dynamic(() => import("./mock-payment-app/components/EventTypeAppCardInterface")), - paypal: dynamic(() => import("./paypal/components/EventTypeAppCardInterface")), - "pipedrive-crm": dynamic(() => import("./pipedrive-crm/components/EventTypeAppCardInterface")), - plausible: dynamic(() => import("./plausible/components/EventTypeAppCardInterface")), - posthog: dynamic(() => import("./posthog/components/EventTypeAppCardInterface")), - qr_code: dynamic(() => import("./qr_code/components/EventTypeAppCardInterface")), - salesforce: dynamic(() => import("./salesforce/components/EventTypeAppCardInterface")), - stripepayment: dynamic(() => import("./stripepayment/components/EventTypeAppCardInterface")), - "booking-pages-tag": dynamic(() => - import("./templates/booking-pages-tag/components/EventTypeAppCardInterface") + hitpay: dynamic( + () => import("./hitpay/components/EventTypeAppCardInterface") ), - "event-type-app-card": dynamic(() => - import("./templates/event-type-app-card/components/EventTypeAppCardInterface") + hubspot: dynamic( + () => import("./hubspot/components/EventTypeAppCardInterface") + ), + insihts: dynamic( + () => import("./insihts/components/EventTypeAppCardInterface") + ), + matomo: dynamic( + () => import("./matomo/components/EventTypeAppCardInterface") + ), + metapixel: dynamic( + () => import("./metapixel/components/EventTypeAppCardInterface") + ), + "mock-payment-app": dynamic( + () => import("./mock-payment-app/components/EventTypeAppCardInterface") + ), + paypal: dynamic( + () => import("./paypal/components/EventTypeAppCardInterface") + ), + "pipedrive-crm": dynamic( + () => import("./pipedrive-crm/components/EventTypeAppCardInterface") + ), + plausible: dynamic( + () => import("./plausible/components/EventTypeAppCardInterface") + ), + posthog: dynamic( + () => import("./posthog/components/EventTypeAppCardInterface") + ), + qr_code: dynamic( + () => import("./qr_code/components/EventTypeAppCardInterface") + ), + salesforce: dynamic( + () => import("./salesforce/components/EventTypeAppCardInterface") + ), + stripepayment: dynamic( + () => import("./stripepayment/components/EventTypeAppCardInterface") + ), + "booking-pages-tag": dynamic( + () => + import( + "./templates/booking-pages-tag/components/EventTypeAppCardInterface" + ) + ), + "event-type-app-card": dynamic( + () => + import( + "./templates/event-type-app-card/components/EventTypeAppCardInterface" + ) + ), + twipla: dynamic( + () => import("./twipla/components/EventTypeAppCardInterface") ), - twipla: dynamic(() => import("./twipla/components/EventTypeAppCardInterface")), umami: dynamic(() => import("./umami/components/EventTypeAppCardInterface")), - "zoho-bigin": dynamic(() => import("./zoho-bigin/components/EventTypeAppCardInterface")), - zohocrm: dynamic(() => import("./zohocrm/components/EventTypeAppCardInterface")), + "zoho-bigin": dynamic( + () => import("./zoho-bigin/components/EventTypeAppCardInterface") + ), + zohocrm: dynamic( + () => import("./zohocrm/components/EventTypeAppCardInterface") + ), }; export const EventTypeSettingsMap = { - alby: dynamic(() => import("./alby/components/EventTypeAppSettingsInterface")), - basecamp3: dynamic(() => import("./basecamp3/components/EventTypeAppSettingsInterface")), - btcpayserver: dynamic(() => import("./btcpayserver/components/EventTypeAppSettingsInterface")), - databuddy: dynamic(() => import("./databuddy/components/EventTypeAppSettingsInterface")), - fathom: dynamic(() => import("./fathom/components/EventTypeAppSettingsInterface")), + alby: dynamic( + () => import("./alby/components/EventTypeAppSettingsInterface") + ), + basecamp3: dynamic( + () => import("./basecamp3/components/EventTypeAppSettingsInterface") + ), + btcpayserver: dynamic( + () => import("./btcpayserver/components/EventTypeAppSettingsInterface") + ), + databuddy: dynamic( + () => import("./databuddy/components/EventTypeAppSettingsInterface") + ), + fathom: dynamic( + () => import("./fathom/components/EventTypeAppSettingsInterface") + ), ga4: dynamic(() => import("./ga4/components/EventTypeAppSettingsInterface")), - giphy: dynamic(() => import("./giphy/components/EventTypeAppSettingsInterface")), + giphy: dynamic( + () => import("./giphy/components/EventTypeAppSettingsInterface") + ), gtm: dynamic(() => import("./gtm/components/EventTypeAppSettingsInterface")), - hitpay: dynamic(() => import("./hitpay/components/EventTypeAppSettingsInterface")), - metapixel: dynamic(() => import("./metapixel/components/EventTypeAppSettingsInterface")), - paypal: dynamic(() => import("./paypal/components/EventTypeAppSettingsInterface")), - plausible: dynamic(() => import("./plausible/components/EventTypeAppSettingsInterface")), - qr_code: dynamic(() => import("./qr_code/components/EventTypeAppSettingsInterface")), - stripepayment: dynamic(() => import("./stripepayment/components/EventTypeAppSettingsInterface")), + hitpay: dynamic( + () => import("./hitpay/components/EventTypeAppSettingsInterface") + ), + metapixel: dynamic( + () => import("./metapixel/components/EventTypeAppSettingsInterface") + ), + paypal: dynamic( + () => import("./paypal/components/EventTypeAppSettingsInterface") + ), + plausible: dynamic( + () => import("./plausible/components/EventTypeAppSettingsInterface") + ), + qr_code: dynamic( + () => import("./qr_code/components/EventTypeAppSettingsInterface") + ), + stripepayment: dynamic( + () => import("./stripepayment/components/EventTypeAppSettingsInterface") + ), }; diff --git a/packages/app-store/apps.keys-schemas.generated.ts b/packages/app-store/apps.keys-schemas.generated.ts index 7c9ba1c9f6..edc85d04d1 100644 --- a/packages/app-store/apps.keys-schemas.generated.ts +++ b/packages/app-store/apps.keys-schemas.generated.ts @@ -52,7 +52,6 @@ import { appKeysSchema as zoho_bigin_zod_ts } from "./zoho-bigin/zod"; import { appKeysSchema as zohocalendar_zod_ts } from "./zohocalendar/zod"; import { appKeysSchema as zohocrm_zod_ts } from "./zohocrm/zod"; import { appKeysSchema as zoomvideo_zod_ts } from "./zoomvideo/zod"; - export const appKeysSchemas = { alby: alby_zod_ts, basecamp3: basecamp3_zod_ts, diff --git a/packages/app-store/apps.metadata.generated.ts b/packages/app-store/apps.metadata.generated.ts index 97e29f6a35..bec5600add 100644 --- a/packages/app-store/apps.metadata.generated.ts +++ b/packages/app-store/apps.metadata.generated.ts @@ -111,7 +111,6 @@ import zoho_bigin_config_json from "./zoho-bigin/config.json"; import zohocalendar_config_json from "./zohocalendar/config.json"; import zohocrm_config_json from "./zohocrm/config.json"; import { metadata as zoomvideo__metadata_ts } from "./zoomvideo/_metadata"; - export const appStoreMetadata = { alby: alby_config_json, amie: amie_config_json, diff --git a/packages/app-store/apps.schemas.generated.ts b/packages/app-store/apps.schemas.generated.ts index be0e20e474..28310ace22 100644 --- a/packages/app-store/apps.schemas.generated.ts +++ b/packages/app-store/apps.schemas.generated.ts @@ -52,7 +52,6 @@ import { appDataSchema as zoho_bigin_zod_ts } from "./zoho-bigin/zod"; import { appDataSchema as zohocalendar_zod_ts } from "./zohocalendar/zod"; import { appDataSchema as zohocrm_zod_ts } from "./zohocrm/zod"; import { appDataSchema as zoomvideo_zod_ts } from "./zoomvideo/zod"; - export const appDataSchemas = { alby: alby_zod_ts, basecamp3: basecamp3_zod_ts, diff --git a/packages/app-store/bookerApps.metadata.generated.ts b/packages/app-store/bookerApps.metadata.generated.ts index 06ea3bf4e7..9c1623fe6b 100644 --- a/packages/app-store/bookerApps.metadata.generated.ts +++ b/packages/app-store/bookerApps.metadata.generated.ts @@ -46,7 +46,6 @@ import webex_config_json from "./webex/config.json"; import whatsapp_config_json from "./whatsapp/config.json"; import whereby_config_json from "./whereby/config.json"; import { metadata as zoomvideo__metadata_ts } from "./zoomvideo/_metadata"; - export const appStoreMetadata = { campfire: campfire_config_json, dailyvideo: dailyvideo__metadata_ts, diff --git a/packages/app-store/eslint.config.mjs b/packages/app-store/eslint.config.mjs deleted file mode 100644 index 2a11e1b478..0000000000 --- a/packages/app-store/eslint.config.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import { forbid } from "@calcom/eslint-config/base"; -import { config } from "@calcom/eslint-config/react-internal"; - -export default [ - ...config, - forbid({ - from: "../features/**", - target: ".", - message: "app-store package should not import from features to avoid circular dependencies.", - }), - forbid({ - from: "../trpc/**", - target: ".", - message: "app-store package should not import from trpc to avoid circular dependencies.", - }), -]; diff --git a/packages/app-store/package.json b/packages/app-store/package.json index ff67095fc9..d380a194a0 100644 --- a/packages/app-store/package.json +++ b/packages/app-store/package.json @@ -10,9 +10,9 @@ "scripts": { "type-check": "tsc --pretty --noEmit", "type-check:ci": "tsc-absolute --pretty --noEmit", - "lint": "eslint .", - "lint:fix": "eslint .", - "lint:report": "eslint . --format json --output-file ../../lint-results/app-store.json" + "lint": "biome lint .", + "lint:fix": "biome lint --write .", + "lint:report": "biome lint --reporter json . > ../../lint-results/app-store.json" }, "dependencies": { "@calcom/dailyvideo": "workspace:*", @@ -33,7 +33,6 @@ "zod": "^3.0.0" }, "devDependencies": { - "@calcom/eslint-config": "workspace:*", "@calcom/types": "workspace:*" } } diff --git a/packages/app-store/routing-forms/package.json b/packages/app-store/routing-forms/package.json index 697335c79c..55c275f173 100644 --- a/packages/app-store/routing-forms/package.json +++ b/packages/app-store/routing-forms/package.json @@ -12,11 +12,10 @@ "react-awesome-query-builder": "5.1.2" }, "scripts": { - "lint": "eslint .", - "lint:fix": "eslint ." + "lint": "biome lint .", + "lint:fix": "biome lint --write ." }, "devDependencies": { - "@calcom/eslint-config": "workspace:*", "@calcom/types": "workspace:*", "@types/json-logic-js": "1.2.1" } diff --git a/packages/config/package.json b/packages/config/package.json index 6728b6ae4c..4bdc7de8de 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -5,12 +5,7 @@ "version": "0.0.0", "main": "index.js", "license": "MIT", - "files": [ - "eslint-preset.js", - "prettier-preset.js" - ], "dependencies": { - "@calcom/eslint-plugin-eslint": "workspace:*", "@todesktop/tailwind-variants": "1.0.1", "tailwind-scrollbar": "4.0.2", "tailwindcss-radix": "4.0.2", @@ -18,16 +13,6 @@ }, "devDependencies": { "@tailwindcss/typography": "0.5.4", - "@trivago/prettier-plugin-sort-imports": "4.1.1", - "@typescript-eslint/eslint-plugin": "5.52.0", - "@typescript-eslint/parser": "5.52.0", - "eslint-config-next": "13.5.11", - "eslint-config-prettier": "8.6.0", - "eslint-config-turbo": "0.0.7", - "eslint-plugin-playwright": "0.12.0", - "eslint-plugin-prettier": "4.2.1", - "prettier": "2.8.7", - "prettier-plugin-tailwindcss": "0.2.5", "typescript": "5.9.2" } } diff --git a/packages/config/prettier-preset.js b/packages/config/prettier-preset.js deleted file mode 100644 index fba3d2e4a5..0000000000 --- a/packages/config/prettier-preset.js +++ /dev/null @@ -1,41 +0,0 @@ -module.exports = { - bracketSpacing: true, - bracketSameLine: true, - singleQuote: false, - jsxSingleQuote: false, - trailingComma: "es5", - semi: true, - printWidth: 110, - arrowParens: "always", - endOfLine: "auto", - importOrder: [ - // Mocks must be at the top as they contain vi.mock calls - "(.*)/__mocks__/(.*)", - // bookingScenario contains prismock that must be imported asap - "(.*)bookingScenario(.*)", - "", - "^@(calcom|ee)/(.*)$", - "^@lib/(.*)$", - "^@components/(.*)$", - "^@(server|trpc)/(.*)$", - "^~/(.*)$", - "^[./]", - ], - importOrderSeparation: true, - plugins: [ - "@trivago/prettier-plugin-sort-imports", - /** - * **NOTE** tailwind plugin must come last! - * @see https://github.com/tailwindlabs/prettier-plugin-tailwindcss#compatibility-with-other-prettier-plugins - */ - "prettier-plugin-tailwindcss", - ], - overrides: [ - { - files: ["apps/website/lib/utils/wordlist/wordlist.ts"], - options: { - quoteProps: "consistent", - }, - }, - ], -}; diff --git a/packages/coss-ui/package.json b/packages/coss-ui/package.json index a9be112342..10383fece7 100644 --- a/packages/coss-ui/package.json +++ b/packages/coss-ui/package.json @@ -9,8 +9,8 @@ "./hooks/*": "./src/hooks/*.ts" }, "scripts": { - "lint": "eslint .", - "lint:fix": "eslint . --fix", + "lint": "biome lint .", + "lint:fix": "biome lint --write .", "type-check": "tsc --pretty --noEmit", "type-check:ci": "tsc-absolute --pretty --noEmit", "registry:pull": "ts-node ../../scripts/pull-coss-ui-components.ts" diff --git a/packages/embeds/embed-core/package.json b/packages/embeds/embed-core/package.json index 35fac0df42..eb095e31b2 100644 --- a/packages/embeds/embed-core/package.json +++ b/packages/embeds/embed-core/package.json @@ -28,8 +28,8 @@ "dev-real": "vite dev --port 3100", "type-check": "tsc --pretty --noEmit", "type-check:ci": "tsc-absolute --pretty --noEmit", - "lint": "eslint --ext .ts,.js src", - "lint:fix": "eslint --ext .ts,.js src --fix", + "lint": "biome lint src", + "lint:fix": "biome lint --write src", "embed-tests": "yarn playwright test --config=playwright/config/playwright.config.ts", "embed-tests-quick": "QUICK=true yarn embed-tests", "embed-tests-update-snapshots:ci": "yarn embed-tests-quick --update-snapshots", diff --git a/packages/embeds/embed-core/src/embed-iframe.ts b/packages/embeds/embed-core/src/embed-iframe.ts index 280aa3c48f..c97d1069cb 100644 --- a/packages/embeds/embed-core/src/embed-iframe.ts +++ b/packages/embeds/embed-core/src/embed-iframe.ts @@ -269,6 +269,10 @@ export const useEmbedType = () => { }; function makeBodyVisible() { + // Guard against test environment teardown where document may no longer exist + if (typeof document === "undefined" || !document.body) { + return; + } if (document.body.style.visibility !== "visible") { document.body.style.visibility = "visible"; } diff --git a/packages/embeds/embed-core/src/embed-iframe/lib/embedStore.ts b/packages/embeds/embed-core/src/embed-iframe/lib/embedStore.ts index 962152e3cd..de31b75389 100644 --- a/packages/embeds/embed-core/src/embed-iframe/lib/embedStore.ts +++ b/packages/embeds/embed-core/src/embed-iframe/lib/embedStore.ts @@ -9,7 +9,7 @@ import type { } from "../../types"; import { runAsap, log } from "./utils"; -export const enum EMBED_IFRAME_STATE { +export enum EMBED_IFRAME_STATE { NOT_INITIALIZED, INITIALIZED, } diff --git a/packages/embeds/embed-react/package.json b/packages/embeds/embed-react/package.json index 760418ebbd..f1dc00dd43 100644 --- a/packages/embeds/embed-react/package.json +++ b/packages/embeds/embed-react/package.json @@ -15,7 +15,7 @@ "preview": "vite preview", "type-check": "tsc --pretty --noEmit", "type-check:ci": "tsc-absolute --pretty --noEmit", - "lint": "eslint --ext .ts,.js,.tsx,.jsx ./src", + "lint": "biome lint ./src", "embed-tests": "yarn playwright test --config=./playwright/config/playwright.config.ts", "embed-tests-quick": "QUICK=true yarn embed-tests", "embed-tests-update-snapshots:ci": "yarn embed-tests-quick --update-snapshots", @@ -44,7 +44,6 @@ } }, "devDependencies": { - "@calcom/eslint-config": "workspace:*", "@playwright/test": "1.57.0", "@types/react": "18.0.26", "@types/react-dom": "18.2.6", diff --git a/packages/embeds/embed-snippet/package.json b/packages/embeds/embed-snippet/package.json index 39d789877f..e61c0918d9 100644 --- a/packages/embeds/embed-snippet/package.json +++ b/packages/embeds/embed-snippet/package.json @@ -15,7 +15,7 @@ "build": "rm -rf dist && vite build && tsc --emitDeclarationOnly --declarationDir dist", "type-check": "tsc --pretty --noEmit", "type-check:ci": "tsc-absolute --pretty --noEmit", - "lint": "eslint --ext .ts,.js src", + "lint": "biome lint src", "withEmbedPublishEnv": "NEXT_PUBLIC_EMBED_LIB_URL='https://app.cal.com/embed/embed.js' NEXT_PUBLIC_WEBAPP_URL='https://app.cal.com' yarn", "prepack": "yarn ../../../ lint --filter='@calcom/embed-snippet' && yarn withEmbedPublishEnv build", "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist" @@ -25,7 +25,6 @@ ], "types": "./dist/index.d.ts", "devDependencies": { - "@calcom/eslint-config": "workspace:*", "typescript": "5.9.2", "vite": "4.5.14" }, diff --git a/packages/eslint-config/base.js b/packages/eslint-config/base.js deleted file mode 100644 index 16578094d1..0000000000 --- a/packages/eslint-config/base.js +++ /dev/null @@ -1,60 +0,0 @@ -import js from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import importPlugin from "eslint-plugin-import"; -import onlyWarn from "eslint-plugin-only-warn"; -import turboPlugin from "eslint-plugin-turbo"; -import tseslint from "typescript-eslint"; - -/** - * A shared ESLint configuration for the repository. - * - * @type {import("eslint").Linter.Config} - */ -export const config = [ - js.configs.recommended, - eslintConfigPrettier, - ...tseslint.configs.recommended, - { - plugins: { - turbo: turboPlugin, - import: importPlugin, - onlyWarn, - }, - rules: { - "turbo/no-undeclared-env-vars": "warn", - "@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }], - }, - languageOptions: { - ecmaVersion: 2021, - sourceType: "module", - }, - settings: { - "import/resolver": { - typescript: true, - node: true, - }, - }, - }, - { - ignores: ["dist/**", "**/node_modules/**", "**/.next/**"], - }, -]; - -export function forbid({ from, target, message }) { - return { - rules: { - "import/no-restricted-paths": [ - "error", - { - zones: [ - { - from: [from], - target: [target], - message: message ?? `Import denied from ${target} to ${from}`, - }, - ], - }, - ], - }, - }; -} diff --git a/packages/eslint-config/next.js b/packages/eslint-config/next.js deleted file mode 100644 index 411e009873..0000000000 --- a/packages/eslint-config/next.js +++ /dev/null @@ -1,51 +0,0 @@ -import js from "@eslint/js"; -import pluginNext from "@next/eslint-plugin-next"; -import eslintConfigPrettier from "eslint-config-prettier"; -import pluginReact from "eslint-plugin-react"; -import pluginReactHooks from "eslint-plugin-react-hooks"; -import globals from "globals"; -import tseslint from "typescript-eslint"; - -import { config as baseConfig } from "./base.js"; - -/** - * A custom ESLint configuration for libraries that use Next.js. - * - * @type {import("eslint").Linter.Config} - * */ -export const nextJsConfig = [ - ...baseConfig, - js.configs.recommended, - eslintConfigPrettier, - ...tseslint.configs.recommended, - { - ...pluginReact.configs.flat.recommended, - languageOptions: { - ...pluginReact.configs.flat.recommended.languageOptions, - globals: { - ...globals.serviceworker, - }, - }, - }, - { - plugins: { - "@next/next": pluginNext, - }, - rules: { - ...pluginNext.configs.recommended.rules, - ...pluginNext.configs["core-web-vitals"].rules, - }, - }, - { - plugins: { - "react-hooks": pluginReactHooks, - }, - settings: { react: { version: "detect" } }, - rules: { - ...pluginReactHooks.configs.recommended.rules, - // React scope no longer necessary with new JSX transform. - "react/react-in-jsx-scope": "off", - "react/prop-types": "off", - }, - }, -]; diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json deleted file mode 100644 index 6e82e09cde..0000000000 --- a/packages/eslint-config/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "@calcom/eslint-config", - "version": "0.0.0", - "type": "module", - "private": true, - "exports": { - "./base": "./base.js", - "./next-js": "./next.js", - "./react-internal": "./react-internal.js" - }, - "dependencies": { - "@eslint/js": "9.36.0", - "@next/eslint-plugin-next": "15.4.5", - "@typescript-eslint/eslint-plugin": "8.39.0", - "@typescript-eslint/parser": "8.39.0", - "globals": "15.15.0", - "typescript-eslint": "8.40.0" - }, - "devDependencies": { - "eslint": "9.36.0", - "eslint-config-prettier": "9.1.2", - "eslint-import-resolver-typescript": "4.4.4", - "eslint-plugin-import": "2.32.0", - "eslint-plugin-only-warn": "1.1.0", - "eslint-plugin-react": "7.37.5", - "eslint-plugin-react-hooks": "5.2.0", - "eslint-plugin-turbo": "2.5.5", - "typescript": "5.9.2" - } -} diff --git a/packages/eslint-config/react-internal.js b/packages/eslint-config/react-internal.js deleted file mode 100644 index d4d6d0dc4b..0000000000 --- a/packages/eslint-config/react-internal.js +++ /dev/null @@ -1,41 +0,0 @@ -import js from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import pluginReact from "eslint-plugin-react"; -import pluginReactHooks from "eslint-plugin-react-hooks"; -import globals from "globals"; -import tseslint from "typescript-eslint"; - -import { config as baseConfig } from "./base.js"; - -/** - * A custom ESLint configuration for libraries that use React. - * - * @type {import("eslint").Linter.Config} */ -export const config = [ - ...baseConfig, - js.configs.recommended, - eslintConfigPrettier, - ...tseslint.configs.recommended, - pluginReact.configs.flat.recommended, - { - languageOptions: { - ...pluginReact.configs.flat.recommended.languageOptions, - globals: { - ...globals.serviceworker, - ...globals.browser, - }, - }, - }, - { - plugins: { - "react-hooks": pluginReactHooks, - }, - settings: { react: { version: "detect" } }, - rules: { - ...pluginReactHooks.configs.recommended.rules, - // React scope no longer necessary with new JSX transform. - "react/react-in-jsx-scope": "off", - "react/prop-types": "off", - }, - }, -]; diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json deleted file mode 100644 index 18a6f10e13..0000000000 --- a/packages/eslint-plugin/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "@calcom/eslint-plugin-eslint", - "sideEffects": false, - "private": true, - "version": "0.1.0", - "main": "./src/index.js", - "dependencies": { - "@typescript-eslint/parser": "5.52.0", - "@typescript-eslint/utils": "5.52.0", - "ts-node-maintained": "10.9.5" - }, - "devDependencies": { - "@types/eslint": "8.4.5", - "typescript": "5.9.2" - } -} diff --git a/packages/eslint-plugin/src/configs/index.ts b/packages/eslint-plugin/src/configs/index.ts deleted file mode 100644 index 5caa0264d8..0000000000 --- a/packages/eslint-plugin/src/configs/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -/* 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 deleted file mode 100644 index 82efc3de3e..0000000000 --- a/packages/eslint-plugin/src/configs/recommended.ts +++ /dev/null @@ -1,16 +0,0 @@ -const recommended = { - parser: "@typescript-eslint/parser", - parserOptions: { sourceType: "module" }, - rules: { - "@calcom/eslint/deprecated-imports": "error", - "@calcom/eslint/deprecated-imports-next-router": "error", - "@calcom/eslint/avoid-web-storage": "error", - "@calcom/eslint/avoid-prisma-client-import-for-enums": "error", - "@calcom/eslint/no-prisma-include-true": "warn", - "@calcom/eslint/no-scroll-into-view-embed": "error", - "@calcom/eslint/no-direct-prisma-import": "error", - "@calcom/eslint/no-this-in-static-method": "error", - }, -}; - -export default recommended; diff --git a/packages/eslint-plugin/src/index.js b/packages/eslint-plugin/src/index.js deleted file mode 100644 index dbda633514..0000000000 --- a/packages/eslint-plugin/src/index.js +++ /dev/null @@ -1,15 +0,0 @@ -// 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-maintained").register({ - compilerOptions: { - module: "commonjs", - }, -}); - -// 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/avoid-prisma-client-import-for-enums.ts b/packages/eslint-plugin/src/rules/avoid-prisma-client-import-for-enums.ts deleted file mode 100644 index 40354c4701..0000000000 --- a/packages/eslint-plugin/src/rules/avoid-prisma-client-import-for-enums.ts +++ /dev/null @@ -1,45 +0,0 @@ -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.source.value === "@prisma/client" && - node.importKind !== "type" && - node.specifiers.forEach((item) => { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - const enumType = item.imported?.name; // ts doesn't know about imported, bad type? - if (!enumType || enumType === "Prisma" || enumType === "PrismaClient") return null; - - return context.report({ - node: item, - loc: node.loc, - messageId: "avoid-prisma-client-import", - data: { - enumType, - }, - }); - }); - }, - }; - }, - name: "avoid-prisma-client-import-for-enums", - meta: { - fixable: "code", - docs: { - description: "Avoid prisma client import for enums", - recommended: "error", - }, - messages: { - "avoid-prisma-client-import": `Import { {{enumType}} } from '@calcom/prisma/enums' to avoid including @prisma/client.`, - }, - type: "suggestion", - schema: [], - }, - defaultOptions: [], -}); - -export default rule; diff --git a/packages/eslint-plugin/src/rules/avoid-web-storage.ts b/packages/eslint-plugin/src/rules/avoid-web-storage.ts deleted file mode 100644 index 11fd928a84..0000000000 --- a/packages/eslint-plugin/src/rules/avoid-web-storage.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { ESLintUtils } from "@typescript-eslint/utils"; - -const createRule = ESLintUtils.RuleCreator((name) => `https://developer.cal.com/eslint/rule/${name}`); -const rule = createRule({ - create(context) { - // Track imported names from @calcom/lib/webstorage - const safeImportedNames = new Set(); - - return { - ImportDeclaration(node) { - // Check if this is an import from the safe webstorage module - if (node.source.value === "@calcom/lib/webstorage") { - node.specifiers.forEach((specifier) => { - if (specifier.type === "ImportSpecifier") { - // Track the local name used for the import - safeImportedNames.add(specifier.local.name); - } - }); - } - }, - - CallExpression(node) { - const webStorages = ["localStorage", "sessionStorage"]; - const callee = node.callee; - - // Check for window.localStorage or window.sessionStorage - if ( - // Can't figure out how to fix this TS issue - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - callee.object?.object?.name === "window" && - // Can't figure out how to fix this TS issue - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - webStorages.includes(node?.callee?.object?.property?.name) - ) { - return context.report({ - node: node, - loc: node.loc, - messageId: "possible-issue-with-embed", - }); - } - - // Check for direct localStorage or sessionStorage usage - if ( - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - callee.type === "MemberExpression" && - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - callee.object?.type === "Identifier" && - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - webStorages.includes(callee.object?.name) && - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - !safeImportedNames.has(callee.object?.name) - ) { - return context.report({ - node: node, - loc: node.loc, - messageId: "possible-issue-with-embed", - }); - } - }, - - // Also check for property access like localStorage.length - MemberExpression(node) { - const webStorages = ["localStorage", "sessionStorage"]; - - // Check for direct property access on localStorage/sessionStorage - if ( - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - node.object?.type === "Identifier" && - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - webStorages.includes(node.object?.name) && - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - !safeImportedNames.has(node.object?.name) - ) { - return context.report({ - node: node, - loc: node.loc, - messageId: "possible-issue-with-embed", - }); - } - - // Check for window.localStorage/sessionStorage property access - if ( - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - node.object?.type === "MemberExpression" && - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - node.object?.object?.name === "window" && - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - webStorages.includes(node.object?.property?.name) - ) { - return context.report({ - node: node, - loc: node.loc, - messageId: "possible-issue-with-embed", - }); - } - }, - }; - }, - name: "avoid-web-storage", - meta: { - fixable: "code", - docs: { - description: "Avoid deprecated imports", - recommended: "warn", - }, - messages: { - "possible-issue-with-embed": `Be aware that accessing localStorage/sessionStorage throws error in Chrome Incognito mode when embed is in cross domain context. If you know what you are doing, \`import {localStorage, sessionStorage} from "@calcom/lib/webstorage"\` for safe usage. See https://github.com/calcom/cal.com/issues/2618`, - }, - type: "suggestion", - schema: [], - }, - defaultOptions: [], -}); - -export default rule; diff --git a/packages/eslint-plugin/src/rules/deprecated-imports-next-router.ts b/packages/eslint-plugin/src/rules/deprecated-imports-next-router.ts deleted file mode 100644 index d0cef9e229..0000000000 --- a/packages/eslint-plugin/src/rules/deprecated-imports-next-router.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { ESLintUtils } from "@typescript-eslint/utils"; - -const createRule = ESLintUtils.RuleCreator((name) => `https://developer.cal.com/eslint/rule/${name}`); - -const rule = createRule({ - name: "deprecated-imports-next-router", - meta: { - fixable: "code", - docs: { - description: "Importing router from 'next/router' is deprecated, use 'next/navigation' instead", - recommended: "error", - }, - messages: { - "deprecated-next-router": - "Importing router from 'next/router' is deprecated, use 'next/navigation' instead", - }, - type: "problem", - schema: [], - }, - defaultOptions: [], - create(context) { - return { - ImportDeclaration(node) { - if (node.source.value === "next/router") { - context.report({ - node, - messageId: "deprecated-next-router", - fix: function (fixer) { - return fixer.replaceText(node.source, "'next/navigation'"); - }, - }); - } - }, - }; - }, -}); - -export default rule; diff --git a/packages/eslint-plugin/src/rules/deprecated-imports.ts b/packages/eslint-plugin/src/rules/deprecated-imports.ts deleted file mode 100644 index 6814d5bbc2..0000000000 --- a/packages/eslint-plugin/src/rules/deprecated-imports.ts +++ /dev/null @@ -1,41 +0,0 @@ -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 deleted file mode 100644 index e180c589cd..0000000000 --- a/packages/eslint-plugin/src/rules/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* eslint-disable @typescript-eslint/no-var-requires*/ -import type { ESLint } from "eslint"; - -export default { - "deprecated-imports": require("./deprecated-imports").default, - "avoid-web-storage": require("./avoid-web-storage").default, - "avoid-prisma-client-import-for-enums": require("./avoid-prisma-client-import-for-enums").default, - "no-prisma-include-true": require("./no-prisma-include-true").default, - "deprecated-imports-next-router": require("./deprecated-imports-next-router").default, - "no-scroll-into-view-embed": require("./no-scroll-into-view-embed").default, - "no-direct-prisma-import": require("./no-direct-prisma-import").default, - "no-this-in-static-method": require("./no-this-in-static-method").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 deleted file mode 100644 index 965216f601..0000000000 --- a/packages/eslint-plugin/src/rules/my-first-rule.ts +++ /dev/null @@ -1,23 +0,0 @@ -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/packages/eslint-plugin/src/rules/no-direct-prisma-import.ts b/packages/eslint-plugin/src/rules/no-direct-prisma-import.ts deleted file mode 100644 index 780f80d935..0000000000 --- a/packages/eslint-plugin/src/rules/no-direct-prisma-import.ts +++ /dev/null @@ -1,43 +0,0 @@ -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) { - if (node.source.value === "@prisma/client") { - return context.report({ - node, - messageId: "no-direct-prisma-import", - data: {}, - fix(fixer) { - return fixer.replaceText( - node.source, - node.source.raw - .replace('"@prisma/client"', '"@calcom/prisma/client"') - .replace("'@prisma/client'", "'@calcom/prisma/client'") - ); - }, - }); - } - }, - }; - }, - name: "no-direct-prisma-import", - meta: { - fixable: "code", - docs: { - description: "Prevent direct imports from @prisma/client", - recommended: "error", - }, - messages: { - "no-direct-prisma-import": `Direct imports from '@prisma/client' are not allowed. Use '@calcom/prisma/client' instead.`, - }, - type: "problem", - schema: [], - }, - defaultOptions: [], -}); - -export default rule; diff --git a/packages/eslint-plugin/src/rules/no-prisma-include-true.ts b/packages/eslint-plugin/src/rules/no-prisma-include-true.ts deleted file mode 100644 index d1dac23b39..0000000000 --- a/packages/eslint-plugin/src/rules/no-prisma-include-true.ts +++ /dev/null @@ -1,100 +0,0 @@ -import type { TSESTree } from "@typescript-eslint/utils"; -import { ESLintUtils } from "@typescript-eslint/utils"; -import type { ReportDescriptor } from "@typescript-eslint/utils/dist/ts-eslint"; - -const createRule = ESLintUtils.RuleCreator((name) => `https://developer.cal.com/eslint/rule/${name}`); - -const assesIncludePropertyIncludesTrue = ( - includeProperty: TSESTree.Property, - reporter: { (reportObj: ReportDescriptor<"no-prisma-include-true">): void } -) => { - if (includeProperty.value.type === "ObjectExpression") { - includeProperty.value.properties.forEach((childProperty) => { - if ( - childProperty.type === "Property" && - childProperty.value.type === "Literal" && - childProperty.value.value === true - ) { - reporter({ - node: childProperty, - messageId: "no-prisma-include-true", - }); - } - }); - } -}; - -const searchIncludeProperty = ( - property: TSESTree.Property, - reporter: { (reportObj: ReportDescriptor<"no-prisma-include-true">): void } -) => { - if (property.type === "Property") { - // If property is include, check if it has a child property with value true - if (property.key.type === "Identifier" && property.key.name === "include") { - assesIncludePropertyIncludesTrue(property, reporter); - } - - // If property value is also an object, recursively search for include property - if (property.value.type === "ObjectExpression") { - property.value.properties.forEach((childProperty) => { - if (childProperty.type === "Property") { - searchIncludeProperty(childProperty, reporter); - } - }); - } - } -}; - -const rule = createRule({ - create: function (context) { - return { - CallExpression(node) { - if (!(node.callee as TSESTree.MemberExpression).property) { - return null; - } - - const nodeName = ((node.callee as TSESTree.MemberExpression).property as TSESTree.Identifier).name; - - if ( - !["findUnique", "findUniqueOrThrow", "findFirst", "findFirstOrThrow", "findMany"].includes(nodeName) - ) { - return null; - } - - const nodeArgs = node.arguments[0] as TSESTree.ObjectExpression; - if (!nodeArgs) { - return null; - } - - const backReporter = (reportObj: ReportDescriptor<"no-prisma-include-true">) => { - context.report(reportObj); - }; - - nodeArgs.properties?.forEach((property) => { - if (property.type === "Property") { - searchIncludeProperty(property, backReporter); - } - }); - return null; - }, - }; - }, - - name: "no-prisma-include-true", - meta: { - type: "problem", - docs: { - description: - "Disallow passing argument object with include: { AnyPropertyName: true } to prisma methods", - recommended: "error", - }, - messages: { - "no-prisma-include-true": `Do not pass argument object with include: { AnyPropertyName: true } to prisma methods`, - }, - fixable: "code", - schema: [], - }, - defaultOptions: [], -}); - -export default rule; diff --git a/packages/eslint-plugin/src/rules/no-scroll-into-view-embed.ts b/packages/eslint-plugin/src/rules/no-scroll-into-view-embed.ts deleted file mode 100644 index 3f4bb5fc00..0000000000 --- a/packages/eslint-plugin/src/rules/no-scroll-into-view-embed.ts +++ /dev/null @@ -1,48 +0,0 @@ -import type { TSESTree } from "@typescript-eslint/utils"; -import { ESLintUtils } from "@typescript-eslint/utils"; - -const createRule = ESLintUtils.RuleCreator((name) => `https://developer.cal.com/eslint/rule/${name}`); - -export default createRule({ - name: "no-scroll-into-view-embed", - meta: { - docs: { - description: "Disallow usage of scrollIntoView and scrollIntoViewSmooth in embed mode", - recommended: "error", - }, - messages: { - noScrollIntoViewForEmbed: - "Make sure to call scrollIntoView/scrollIntoViewSmooth conditionally if it is called without user action. Use useIsEmbed() to detect if embed mode and then don't call it for embed case.", - }, - type: "problem", - schema: [], - }, - defaultOptions: [], - create(context) { - return { - CallExpression(node: TSESTree.CallExpression) { - const { callee } = node; - - if (callee.type === "MemberExpression") { - if ( - callee.property.type === "Identifier" && - (callee.property.name === "scrollIntoView" || callee.property.name === "scrollIntoViewSmooth") - ) { - context.report({ - node, - messageId: "noScrollIntoViewForEmbed", - }); - } - } else if ( - callee.type === "Identifier" && - (callee.name === "scrollIntoView" || callee.name === "scrollIntoViewSmooth") - ) { - context.report({ - node, - messageId: "noScrollIntoViewForEmbed", - }); - } - }, - }; - }, -}); diff --git a/packages/eslint-plugin/src/rules/no-this-in-static-method.ts b/packages/eslint-plugin/src/rules/no-this-in-static-method.ts deleted file mode 100644 index c308d74ef7..0000000000 --- a/packages/eslint-plugin/src/rules/no-this-in-static-method.ts +++ /dev/null @@ -1,109 +0,0 @@ -import type { TSESTree } from "@typescript-eslint/utils"; -import { ESLintUtils } from "@typescript-eslint/utils"; - -const createRule = ESLintUtils.RuleCreator((name) => `https://developer.cal.com/eslint/rule/${name}`); - -const rule = createRule({ - create(context) { - let currentMethodIsStatic = false; - let currentClassName = ""; - - return { - MethodDefinition(node) { - if (node.static && node.key.type === "Identifier") { - currentMethodIsStatic = true; - if (node.parent?.type === "ClassBody" && node.parent.parent?.type === "ClassDeclaration") { - const classNode = node.parent.parent as TSESTree.ClassDeclaration; - if (classNode.id?.name) { - currentClassName = classNode.id.name; - } - } - } - }, - "MethodDefinition:exit"(node: TSESTree.MethodDefinition) { - if (node.static) { - currentMethodIsStatic = false; - currentClassName = ""; - } - }, - MemberExpression(node) { - if ( - currentMethodIsStatic && - node.object.type === "ThisExpression" && - node.property.type === "Identifier" - ) { - const parent = node.parent; - - const isPassedToCallback = - parent?.type === "CallExpression" && - parent.arguments.includes(node) && - parent.callee.type === "MemberExpression" && - parent.callee.property.type === "Identifier" && - ["map", "filter", "forEach", "reduce", "find", "some", "every"].includes( - parent.callee.property.name - ); - - const isVariableAssignment = parent?.type === "VariableDeclarator" && parent.init === node; - - const isObjectProperty = parent?.type === "Property" && parent.value === node; - - const isArrayElement = parent?.type === "ArrayExpression" && parent.elements.includes(node); - - const isFunctionArgument = - parent?.type === "CallExpression" && - parent.arguments.includes(node) && - !( - parent.callee.type === "MemberExpression" && - parent.callee.property.type === "Identifier" && - ["map", "filter", "forEach", "reduce", "find", "some", "every"].includes( - parent.callee.property.name - ) - ); - - const isReturnStatement = parent?.type === "ReturnStatement" && parent.argument === node; - - if ( - isPassedToCallback || - isVariableAssignment || - isObjectProperty || - isArrayElement || - isFunctionArgument || - isReturnStatement - ) { - context.report({ - node, - messageId: "no-this-in-static-method", - data: { - className: currentClassName, - methodName: node.property.name, - }, - fix(fixer) { - if (currentClassName && node.property.type === "Identifier") { - return fixer.replaceText(node, `${currentClassName}.${node.property.name}`); - } - return null; - }, - }); - } - } - }, - }; - }, - name: "no-this-in-static-method", - meta: { - type: "problem", - docs: { - description: "Disallow using 'this' to reference static methods within static methods", - recommended: "error", - }, - messages: { - "no-this-in-static-method": - "Do not use 'this.{{methodName}}' in static methods. Use '{{className}}.{{methodName}}' instead to avoid context loss when passed to callbacks.", - }, - fixable: "code", - schema: [], - }, - defaultOptions: [], -}); - -export default rule; diff --git a/packages/features/eslint.config.mjs b/packages/features/eslint.config.mjs deleted file mode 100644 index 90f555f94c..0000000000 --- a/packages/features/eslint.config.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import { forbid } from "@calcom/eslint-config/base"; -import { config } from "@calcom/eslint-config/base"; - -export default [ - ...config, - forbid({ - from: "../trpc/**", - target: ".", - message: "features package should not import from trpc to avoid circular dependencies.", - }), -]; diff --git a/packages/features/package.json b/packages/features/package.json index 85c71bd461..fd1f6a1f19 100644 --- a/packages/features/package.json +++ b/packages/features/package.json @@ -7,7 +7,7 @@ "version": "1.0.0", "main": "index.ts", "scripts": { - "lint": "eslint .", + "lint": "biome lint .", "dev:trigger": "npx trigger.dev@latest dev --analyze", "deploy:trigger": "npx trigger.dev@latest deploy" }, @@ -30,6 +30,7 @@ "react-select": "5.8.0", "react-sticky-box": "2.0.4", "recharts": "3.0.2", + "stripe": "9.16.0", "stripe-event-types": "3.1.0", "web-push": "3.6.7", "zustand": "4.5.2" diff --git a/packages/lib/OgImages.tsx b/packages/lib/OgImages.tsx index e468fb639b..839bfb0115 100644 --- a/packages/lib/OgImages.tsx +++ b/packages/lib/OgImages.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import type React from "react"; import { CAL_URL, LOGO, WEBAPP_URL } from "./constants"; @@ -47,7 +47,8 @@ const joinMultipleNames = (names: string[] = []) => { return `${names.length > 0 ? `${names.join(", ")} & ${lastName}` : lastName}`; }; -const makeAbsoluteUrl = (url: string) => (/^https?:\/\//.test(url) ? url : `${CAL_URL}${url}`); +const makeAbsoluteUrl = (url: string) => + /^https?:\/\//.test(url) ? url : `${CAL_URL}${url}`; const OG_ASSETS = { meeting: { @@ -81,12 +82,20 @@ export const getOGImageVersion = async ( ...(additionalInputs ?? {}), }; - const content = JSON.stringify(versionInputs, Object.keys(versionInputs).sort()); + const content = JSON.stringify( + versionInputs, + Object.keys(versionInputs).sort() + ); // Use Web Crypto API instead of Node.js crypto for Edge Runtime compatibility (`/api/social/og/image` is an Edge Runtime route) - const hashBuffer = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(content)); + const hashBuffer = await crypto.subtle.digest( + "SHA-256", + new TextEncoder().encode(content) + ); const hashArray = Array.from(new Uint8Array(hashBuffer)); - const hashHex = hashArray.map((b) => b.toString(16).padStart(2, "0")).join(""); + const hashHex = hashArray + .map((b) => b.toString(16).padStart(2, "0")) + .join(""); return hashHex.substring(0, 8); }; @@ -147,7 +156,10 @@ export const constructAppImage = async ({ return encodeURIComponent(`/api/social/og/image?${params.toString()}`); }; -export const constructGenericImage = async ({ title, description }: GenericImageProps): Promise => { +export const constructGenericImage = async ({ + title, + description, +}: GenericImageProps): Promise => { const params = new URLSearchParams({ type: "generic", title, @@ -159,7 +171,11 @@ export const constructGenericImage = async ({ title, description }: GenericImage return encodeURIComponent(`/api/social/og/image?${params.toString()}`); }; -const Wrapper = ({ children, variant = "light", rotateBackground }: WrapperProps) => ( +const Wrapper = ({ + children, + variant = "light", + rotateBackground, +}: WrapperProps) => (
-
{children}
+
+ {children} +
); @@ -186,7 +204,8 @@ export const Meeting = ({ title, users = [], profile }: MeetingImageProps) => { // any non existing images for dynamic collectives, while at the same time removing them from // the names list, because the profile name of that event is a concatenation of all names. const attendees = (profile.image ? [profile, ...users] : users).filter( - (value, index, self) => self.findIndex((v) => v.name === value.name) == index + (value, index, self) => + self.findIndex((v) => v.name === value.name) === index ); // Construct list of avatar urls, removes duplicates and empty profile images @@ -199,15 +218,26 @@ export const Meeting = ({ title, users = [], profile }: MeetingImageProps) => { // In case there is NO other attendee than the single meeting profile without an image, we add // that name back in here, since the event probably is a round robin event. - const names = attendees.length > 0 ? attendees.map((user) => user.name) : [profile.name]; + const names = + attendees.length > 0 ? attendees.map((user) => user.name) : [profile.name]; return (
-
- Logo +
+ Logo {avatars.length > 0 && ( -
+
/
)} @@ -217,28 +247,44 @@ export const Meeting = ({ title, users = [], profile }: MeetingImageProps) => { tw="rounded-full mr-[-36px] border-[6px] border-[#CDCED2]" key={avatar} src={avatar} - alt="Profile picture" + alt="Profile" width={config.avatarSize} height={config.avatarSize} /> ))} {avatars.length > 3 && (
- +{avatars.length - 3} + tw={`flex items-center justify-center w-[${config.avatarSize}px] h-[${config.avatarSize}px] rounded-full bg-black text-inverted text-[54px] font-bold`} + > + + +{avatars.length - 3} +
)}
-
+
+ style={{ + whiteSpace: "nowrap", + fontFamily: "cal", + textOverflow: "ellipsis", + }} + > Meet {joinMultipleNames(names)}
+ style={{ + whiteSpace: "nowrap", + fontFamily: "inter", + textOverflow: "ellipsis", + }} + > {title}
@@ -309,7 +355,10 @@ export const App = ({ name, description, logoUrl }: AppImageProps) => {
-
+
{name}
@@ -331,11 +380,21 @@ export const Generic = ({ title, description }: GenericImageProps) => { return (
-
- Logo +
+ Logo
-
+
{title}
diff --git a/packages/lib/apps/shouldRedirectToAppOnboarding.ts b/packages/lib/apps/shouldRedirectToAppOnboarding.ts index 261d5e30ac..11ee174a17 100644 --- a/packages/lib/apps/shouldRedirectToAppOnboarding.ts +++ b/packages/lib/apps/shouldRedirectToAppOnboarding.ts @@ -1,6 +1,6 @@ import type { AppMeta } from "@calcom/types/App"; export const shouldRedirectToAppOnboarding = (appMetadata: AppMeta) => { - const hasEventTypes = appMetadata?.extendsFeature == "EventType"; + const hasEventTypes = appMetadata?.extendsFeature === "EventType"; return hasEventTypes; }; diff --git a/packages/lib/eslint.config.mjs b/packages/lib/eslint.config.mjs deleted file mode 100644 index b874c6454c..0000000000 --- a/packages/lib/eslint.config.mjs +++ /dev/null @@ -1,39 +0,0 @@ -import { forbid } from "@calcom/eslint-config/base"; -import { config } from "@calcom/eslint-config/base"; - -export default [ - ...config, - forbid({ - from: "../app-store/**", - target: ".", - message: "lib package should not import from app-store to avoid circular dependencies.", - }), - forbid({ - from: "../features/**", - target: ".", - message: "lib package should not import from features to avoid circular dependencies.", - }), - forbid({ - from: "../trpc/**", - target: ".", - message: "lib package should not import from trpc to avoid circular dependencies.", - }), - { - // Block @trpc/server imports to keep packages/lib framework-agnostic. - // defaultResponder.ts is temporarily excluded until it can be refactored. - ignores: ["server/defaultResponder.ts", "server/defaultResponder.test.ts"], - rules: { - "no-restricted-imports": [ - "error", - { - paths: [ - { - name: "@trpc/server", - message: "packages/lib should not import from @trpc/server to keep it framework-agnostic.", - }, - ], - }, - ], - }, - }, -]; diff --git a/packages/lib/package.json b/packages/lib/package.json index 24c09b232b..5dd524dd0b 100644 --- a/packages/lib/package.json +++ b/packages/lib/package.json @@ -5,9 +5,9 @@ "version": "0.0.0", "license": "MIT", "scripts": { - "lint": "eslint . --ext .ts,.js,.tsx,.jsx", - "lint:fix": "eslint . --ext .ts,.js,.tsx,.jsx --fix", - "lint:report": "eslint . --format json --output-file ../../lint-results/app-store.json" + "lint": "biome lint .", + "lint:fix": "biome lint --write .", + "lint:report": "biome lint --reporter json . > ../../lint-results/lib.json" }, "dependencies": { "@calcom/config": "workspace:*", @@ -30,7 +30,6 @@ "uuid": "8.3.2" }, "devDependencies": { - "@calcom/eslint-config": "workspace:*", "@calcom/tsconfig": "workspace:*", "@calcom/types": "workspace:*", "@faker-js/faker": "7.6.0", diff --git a/packages/lib/videoTokens.ts b/packages/lib/videoTokens.ts index 7ef3e41b03..43ea2865b3 100644 --- a/packages/lib/videoTokens.ts +++ b/packages/lib/videoTokens.ts @@ -1,8 +1,12 @@ -import { createHmac } from "crypto"; +import { createHmac } from "node:crypto"; // 262992 minutes is 6 months -export function generateVideoToken(recordingId: string, expiresInMinutes = 262992) { - const secret = process.env.CAL_VIDEO_RECORDING_TOKEN_SECRET || "default-secret-change-me"; +export function generateVideoToken( + recordingId: string, + expiresInMinutes = 262992 +) { + const secret = + process.env.CAL_VIDEO_RECORDING_TOKEN_SECRET || "default-secret-change-me"; const expires = Date.now() + expiresInMinutes * 60 * 1000; const payload = `${recordingId}:${expires}`; @@ -11,18 +15,25 @@ export function generateVideoToken(recordingId: string, expiresInMinutes = 26299 return `${payload}:${hmac}`; } -export function verifyVideoToken(token: string): { valid: boolean; recordingId?: string } { +export function verifyVideoToken(token: string): { + valid: boolean; + recordingId?: string; +} { try { const [recordingId, expires, receivedHmac] = token.split(":"); - const secret = process.env.CAL_VIDEO_RECORDING_TOKEN_SECRET || "default-secret-change-me"; + const secret = + process.env.CAL_VIDEO_RECORDING_TOKEN_SECRET || + "default-secret-change-me"; - if (Date.now() > parseInt(expires)) { + if (Date.now() > parseInt(expires, 10)) { return { valid: false }; } // Verify HMAC const payload = `${recordingId}:${expires}`; - const expectedHmac = createHmac("sha256", secret).update(payload).digest("hex"); + const expectedHmac = createHmac("sha256", secret) + .update(payload) + .digest("hex"); if (receivedHmac !== expectedHmac) { return { valid: false }; diff --git a/packages/platform/examples/base/eslint.config.mjs b/packages/platform/examples/base/eslint.config.mjs deleted file mode 100644 index e08e866e1b..0000000000 --- a/packages/platform/examples/base/eslint.config.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { nextJsConfig } from "@calcom/eslint-config/next-js"; - -export default nextJsConfig; diff --git a/packages/platform/examples/base/package.json b/packages/platform/examples/base/package.json index 7ea729661b..7df89d7abd 100644 --- a/packages/platform/examples/base/package.json +++ b/packages/platform/examples/base/package.json @@ -7,7 +7,7 @@ "dev": "PORT=4321 next dev", "build": "next build", "start": "next start", - "lint": "eslint .", + "lint": "biome lint .", "test:e2e": "playwright test", "test:e2e:ui": "playwright test --ui" }, @@ -21,7 +21,6 @@ "react-select": "5.8.0" }, "devDependencies": { - "@calcom/eslint-config": "workspace:*", "@playwright/test": "1.57.0", "@tailwindcss/postcss": "4.1.15", "@types/node": "20.17.23", diff --git a/packages/platform/examples/base/src/pages/api/get-managed-users.ts b/packages/platform/examples/base/src/pages/api/get-managed-users.ts index e8968121ec..86cb36f644 100644 --- a/packages/platform/examples/base/src/pages/api/get-managed-users.ts +++ b/packages/platform/examples/base/src/pages/api/get-managed-users.ts @@ -13,7 +13,7 @@ export type Data = { }; // example endpoint to endpoint to fetch managed users -export default async function handler(req: NextApiRequest, res: NextApiResponse) { +export default async function handler(_req: NextApiRequest, res: NextApiResponse) { const existingUsers = await prisma.user.findMany({ orderBy: { createdAt: "desc" } }); if (existingUsers && existingUsers.length > 2) { return res.status(200).json({ diff --git a/packages/platform/types/.prettierrc.js b/packages/platform/types/.prettierrc.js deleted file mode 100644 index e7af0afe64..0000000000 --- a/packages/platform/types/.prettierrc.js +++ /dev/null @@ -1,6 +0,0 @@ -const rootConfig = require("../../config/prettier-preset"); - -module.exports = { - ...rootConfig, - importOrderParserPlugins: ["typescript", "decorators-legacy"], -}; diff --git a/packages/trpc/eslint.config.mjs b/packages/trpc/eslint.config.mjs deleted file mode 100644 index 81700c496c..0000000000 --- a/packages/trpc/eslint.config.mjs +++ /dev/null @@ -1,14 +0,0 @@ -import { config } from "@calcom/eslint-config/base"; -import { forbid } from "@calcom/eslint-config/base"; - -export default [ - ...config, - { - ignores: ["./types/**"], - }, - forbid({ - from: "../apps/web/**", - target: ".", - message: "trpc package should not import from apps/web to avoid circular dependencies.", - }), -]; diff --git a/packages/trpc/package.json b/packages/trpc/package.json index eeaaa472f2..1c0f8c7277 100644 --- a/packages/trpc/package.json +++ b/packages/trpc/package.json @@ -7,8 +7,8 @@ "version": "1.0.0", "main": "index.ts", "scripts": { - "lint": "eslint .", - "lint:fix": "eslint . ", + "lint": "biome lint .", + "lint:fix": "biome lint --write .", "build": "yarn build:server && yarn build:react", "build:server": "yarn tsc --project tsconfig.server.json", "build:react": "yarn tsc --project tsconfig.react.json" @@ -30,7 +30,6 @@ "react-dom": "^18.0.0 || ^19.0.0" }, "devDependencies": { - "@calcom/eslint-config": "workspace:*", "@tanstack/react-query": "5.17.19", "@types/cookie": "0.6.0", "@types/uuid": "8.3.4", diff --git a/packages/ui/components/icon/icon-names.ts b/packages/ui/components/icon/icon-names.ts index d6d891205d..c6a977ea4e 100644 --- a/packages/ui/components/icon/icon-names.ts +++ b/packages/ui/components/icon/icon-names.ts @@ -1,159 +1,159 @@ // This file is generated by yarn run build:icons export type IconName = - | "activity" - | "arrow-down" - | "arrow-left" - | "arrow-right" - | "arrow-up-right" - | "arrow-up" - | "asterisk" - | "at-sign" - | "atom" - | "badge-check" - | "ban" - | "bell" - | "binary" - | "blocks" - | "bold" - | "book-open-check" - | "book-open" - | "book-user" - | "book" - | "bookmark" - | "building" - | "calendar-check-2" - | "calendar-days" - | "calendar-heart" - | "calendar-range" - | "calendar-search" - | "calendar-x-2" - | "calendar" - | "chart-bar" - | "chart-line" - | "check-check" - | "check" - | "chevron-down" - | "chevron-left" - | "chevron-right" - | "chevron-up" - | "chevrons-down-up" - | "chevrons-left" - | "chevrons-right" - | "chevrons-up-down" - | "circle-alert" - | "circle-arrow-up" - | "circle-check-big" - | "circle-check" - | "circle-help" - | "circle-plus" - | "circle-x" - | "circle" - | "clipboard-check" - | "clipboard" - | "clock" - | "code" - | "columns-3" - | "command" - | "contact" - | "copy" - | "corner-down-left" - | "corner-down-right" - | "credit-card" - | "disc" - | "dot" - | "download" - | "ellipsis-vertical" - | "ellipsis" - | "external-link" - | "eye-off" - | "eye" - | "file-down" - | "file-text" - | "file" - | "filter" - | "fingerprint" - | "flag" - | "folder" - | "gift" - | "git-merge" - | "github" - | "globe" - | "grid-3x3" - | "handshake" - | "info" - | "italic" - | "key" - | "layers" - | "layout-dashboard" - | "link-2" - | "link" - | "list-filter" - | "loader" - | "lock-open" - | "lock" - | "log-out" - | "mail-open" - | "mail" - | "map-pin" - | "map" - | "menu" - | "message-circle" - | "messages-square" - | "mic-off" - | "mic" - | "monitor" - | "moon" - | "paintbrush" - | "paperclip" - | "pause" - | "pencil" - | "phone-call" - | "phone-incoming" - | "phone-off" - | "phone-outgoing" - | "phone" - | "play" - | "plus" - | "refresh-ccw" - | "refresh-cw" - | "repeat" - | "rocket" - | "rotate-ccw" - | "rotate-cw" - | "search" - | "send" - | "settings" - | "share-2" - | "shield-check" - | "shield" - | "shuffle" - | "sliders-horizontal" - | "sliders-vertical" - | "smartphone" - | "sparkles" - | "split" - | "square-check" - | "square-pen" - | "star" - | "sun" - | "sunrise" - | "sunset" - | "tags" - | "terminal" - | "trash-2" - | "trash" - | "trello" - | "triangle-alert" - | "upload" - | "user-check" - | "user-plus" - | "user-x" - | "user" - | "users" - | "venetian-mask" - | "video" - | "waypoints" - | "webhook" - | "x" - | "zap"; + | "activity" + | "arrow-down" + | "arrow-left" + | "arrow-right" + | "arrow-up-right" + | "arrow-up" + | "asterisk" + | "at-sign" + | "atom" + | "badge-check" + | "ban" + | "bell" + | "binary" + | "blocks" + | "bold" + | "book-open-check" + | "book-open" + | "book-user" + | "book" + | "bookmark" + | "building" + | "calendar-check-2" + | "calendar-days" + | "calendar-heart" + | "calendar-range" + | "calendar-search" + | "calendar-x-2" + | "calendar" + | "chart-bar" + | "chart-line" + | "check-check" + | "check" + | "chevron-down" + | "chevron-left" + | "chevron-right" + | "chevron-up" + | "chevrons-down-up" + | "chevrons-left" + | "chevrons-right" + | "chevrons-up-down" + | "circle-alert" + | "circle-arrow-up" + | "circle-check-big" + | "circle-check" + | "circle-help" + | "circle-plus" + | "circle-x" + | "circle" + | "clipboard-check" + | "clipboard" + | "clock" + | "code" + | "columns-3" + | "command" + | "contact" + | "copy" + | "corner-down-left" + | "corner-down-right" + | "credit-card" + | "disc" + | "dot" + | "download" + | "ellipsis-vertical" + | "ellipsis" + | "external-link" + | "eye-off" + | "eye" + | "file-down" + | "file-text" + | "file" + | "filter" + | "fingerprint" + | "flag" + | "folder" + | "gift" + | "git-merge" + | "github" + | "globe" + | "grid-3x3" + | "handshake" + | "info" + | "italic" + | "key" + | "layers" + | "layout-dashboard" + | "link-2" + | "link" + | "list-filter" + | "loader" + | "lock-open" + | "lock" + | "log-out" + | "mail-open" + | "mail" + | "map-pin" + | "map" + | "menu" + | "message-circle" + | "messages-square" + | "mic-off" + | "mic" + | "monitor" + | "moon" + | "paintbrush" + | "paperclip" + | "pause" + | "pencil" + | "phone-call" + | "phone-incoming" + | "phone-off" + | "phone-outgoing" + | "phone" + | "play" + | "plus" + | "refresh-ccw" + | "refresh-cw" + | "repeat" + | "rocket" + | "rotate-ccw" + | "rotate-cw" + | "search" + | "send" + | "settings" + | "share-2" + | "shield-check" + | "shield" + | "shuffle" + | "sliders-horizontal" + | "sliders-vertical" + | "smartphone" + | "sparkles" + | "split" + | "square-check" + | "square-pen" + | "star" + | "sun" + | "sunrise" + | "sunset" + | "tags" + | "terminal" + | "trash-2" + | "trash" + | "trello" + | "triangle-alert" + | "upload" + | "user-check" + | "user-plus" + | "user-x" + | "user" + | "users" + | "venetian-mask" + | "video" + | "waypoints" + | "webhook" + | "x" + | "zap"; diff --git a/packages/ui/package.json b/packages/ui/package.json index 409c00b2b4..8bc76b614d 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -61,11 +61,11 @@ }, "license": "MIT", "scripts": { - "lint": "eslint .", + "lint": "biome lint .", "type-check": "tsc --pretty --noEmit", "type-check:ci": "tsc-absolute --pretty --noEmit", - "lint:fix": "eslint . --fix", - "lint:report": "eslint . --format json --output-file ../../lint-results/ui.json", + "lint:fix": "biome lint --write .", + "lint:report": "biome lint --reporter json . > ../../lint-results/ui.json", "dx": "node ./scripts/build-icons.mjs", "dev": "node ./scripts/build-icons.mjs", "build": "node ./scripts/build-icons.mjs", @@ -119,8 +119,8 @@ "react-dom": "^18.0.0 || ^19.0.0" }, "devDependencies": { + "@biomejs/biome": "^2.3.8", "@calcom/config": "workspace:*", - "@calcom/eslint-config": "workspace:*", "@calcom/tsconfig": "workspace:*", "@testing-library/user-event": "14.6.1", "@types/react": "18.0.26", diff --git a/packages/ui/scripts/build-icons.mjs b/packages/ui/scripts/build-icons.mjs index 3ce76a4c8c..3142fd9427 100644 --- a/packages/ui/scripts/build-icons.mjs +++ b/packages/ui/scripts/build-icons.mjs @@ -5,9 +5,13 @@ import glob from "fast-glob"; import fsExtra from "fs-extra"; import { parse } from "node-html-parser"; import * as path from "node:path"; +import { createRequire } from "node:module"; import { copyIcons, removeTempDir } from "./generate-icons.mjs"; +const require = createRequire(import.meta.url); +const biomeBin = require.resolve("@biomejs/biome/bin/biome"); + const cwd = process.cwd(); const inputDir = path.join(cwd, "svg-icons"); const inputDirRelative = path.relative(cwd, inputDir); @@ -118,7 +122,7 @@ async function writeIfChanged(filepath, newContent) { const currentContent = await fsExtra.readFile(filepath, "utf8").catch(() => ""); if (currentContent === newContent) return false; await fsExtra.writeFile(filepath, newContent, "utf8"); - await $`prettier --write ${filepath} --ignore-unknown`; + await $`node ${biomeBin} format --write ${filepath}`; return true; } diff --git a/yarn.lock b/yarn.lock index dd67abaf02..be3a74d4af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1180,18 +1180,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:7.17.7": - version: 7.17.7 - resolution: "@babel/generator@npm:7.17.7" - dependencies: - "@babel/types": "npm:^7.17.0" - jsesc: "npm:^2.5.1" - source-map: "npm:^0.5.0" - checksum: 10/3303afa2b1310e67071d6c998121b2af1038d6450df266d24fe9a86329fb6288b8ab38bb71787917b3f81a1c4edbc5bc7e6735683fe1d0aa288b33e93daacd60 - languageName: node - linkType: hard - -"@babel/generator@npm:7.28.5, @babel/generator@npm:^7.17.3, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.26.10, @babel/generator@npm:^7.28.5, @babel/generator@npm:^7.7.2": +"@babel/generator@npm:7.28.5, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.26.10, @babel/generator@npm:^7.28.5, @babel/generator@npm:^7.7.2": version: 7.28.5 resolution: "@babel/generator@npm:7.28.5" dependencies: @@ -1226,25 +1215,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-environment-visitor@npm:^7.16.7": - version: 7.24.7 - resolution: "@babel/helper-environment-visitor@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10/079d86e65701b29ebc10baf6ed548d17c19b808a07aa6885cc141b690a78581b180ee92b580d755361dc3b16adf975b2d2058b8ce6c86675fcaf43cf22f2f7c6 - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.16.7": - version: 7.24.7 - resolution: "@babel/helper-function-name@npm:7.24.7" - dependencies: - "@babel/template": "npm:^7.24.7" - "@babel/types": "npm:^7.24.7" - checksum: 10/2ceb3d9b2b35a0fc4100fc06ed7be3bc38f03ff0bf128ff0edbc0cc7dd842967b1496fc70b5c616c747d7711c2b87e7d025c8888f48740631d6148a9d3614f85 - languageName: node - linkType: hard - "@babel/helper-globals@npm:^7.28.0": version: 7.28.0 resolution: "@babel/helper-globals@npm:7.28.0" @@ -1252,15 +1222,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.16.7": - version: 7.24.7 - resolution: "@babel/helper-hoist-variables@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10/6cfdcf2289cd12185dcdbdf2435fa8d3447b797ac75851166de9fc8503e2fd0021db6baf8dfbecad3753e582c08e6a3f805c8d00cbed756060a877d705bd8d8d - languageName: node - linkType: hard - "@babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.22.5, @babel/helper-module-imports@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-module-imports@npm:7.25.9" @@ -1291,15 +1252,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.16.7": - version: 7.24.7 - resolution: "@babel/helper-split-export-declaration@npm:7.24.7" - dependencies: - "@babel/types": "npm:^7.24.7" - checksum: 10/ff04a3071603c87de0d6ee2540b7291ab36305b329bd047cdbb6cbd7db335a12f9a77af1cf708779f75f13c4d9af46093c00b34432e50b2411872c658d1a2e5e - languageName: node - linkType: hard - "@babel/helper-string-parser@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-string-parser@npm:7.27.1" @@ -1307,7 +1259,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.16.7, @babel/helper-validator-identifier@npm:^7.25.9, @babel/helper-validator-identifier@npm:^7.27.1, @babel/helper-validator-identifier@npm:^7.28.5": +"@babel/helper-validator-identifier@npm:^7.25.9, @babel/helper-validator-identifier@npm:^7.27.1, @babel/helper-validator-identifier@npm:^7.28.5": version: 7.28.5 resolution: "@babel/helper-validator-identifier@npm:7.28.5" checksum: 10/8e5d9b0133702cfacc7f368bf792f0f8ac0483794877c6dca5fcb73810ee138e27527701826fb58a40a004f3a5ec0a2f3c3dd5e326d262530b119918f3132ba7 @@ -1331,7 +1283,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:7.28.5, @babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.17.3, @babel/parser@npm:^7.20.5, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.4, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.5": +"@babel/parser@npm:7.28.5, @babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.4, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.5": version: 7.28.5 resolution: "@babel/parser@npm:7.28.5" dependencies: @@ -1562,7 +1514,7 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.24.7, @babel/template@npm:^7.26.9, @babel/template@npm:^7.27.0, @babel/template@npm:^7.27.2, @babel/template@npm:^7.3.3": +"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.26.9, @babel/template@npm:^7.27.0, @babel/template@npm:^7.27.2, @babel/template@npm:^7.3.3": version: 7.27.2 resolution: "@babel/template@npm:7.27.2" dependencies: @@ -1573,24 +1525,6 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:7.17.3": - version: 7.17.3 - resolution: "@babel/traverse@npm:7.17.3" - dependencies: - "@babel/code-frame": "npm:^7.16.7" - "@babel/generator": "npm:^7.17.3" - "@babel/helper-environment-visitor": "npm:^7.16.7" - "@babel/helper-function-name": "npm:^7.16.7" - "@babel/helper-hoist-variables": "npm:^7.16.7" - "@babel/helper-split-export-declaration": "npm:^7.16.7" - "@babel/parser": "npm:^7.17.3" - "@babel/types": "npm:^7.17.0" - debug: "npm:^4.1.0" - globals: "npm:^11.1.0" - checksum: 10/03aed531e0baf999ef96deda702f48479d638cb1b172844953221c2244b9c2112f40706b42205e1b12bca06d14afe107ce388a9b9042ebbacd6a64e0e20ab37d - languageName: node - linkType: hard - "@babel/traverse@npm:7.28.5, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.10": version: 7.28.5 resolution: "@babel/traverse@npm:7.28.5" @@ -1606,17 +1540,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:7.17.0": - version: 7.17.0 - resolution: "@babel/types@npm:7.17.0" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.16.7" - to-fast-properties: "npm:^2.0.0" - checksum: 10/535ccef360d0c74e2bb685050f3a45e6ab30f66c740bbdd0858148ed502043f1ae2006a9d0269ac3b7356b690091ae313efd912e408bc0198d80a14b2a6f1537 - languageName: node - linkType: hard - -"@babel/types@npm:7.28.5, @babel/types@npm:^7.0.0, @babel/types@npm:^7.17.0, @babel/types@npm:^7.18.13, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.24.7, @babel/types@npm:^7.25.4, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.10, @babel/types@npm:^7.27.0, @babel/types@npm:^7.27.1, @babel/types@npm:^7.28.5, @babel/types@npm:^7.3.3": +"@babel/types@npm:7.28.5, @babel/types@npm:^7.0.0, @babel/types@npm:^7.18.13, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.25.4, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.10, @babel/types@npm:^7.27.0, @babel/types@npm:^7.27.1, @babel/types@npm:^7.28.5, @babel/types@npm:^7.3.3": version: 7.28.5 resolution: "@babel/types@npm:7.28.5" dependencies: @@ -1681,6 +1605,97 @@ __metadata: languageName: node linkType: hard +"@biomejs/biome@npm:^2.3.8": + version: 2.3.10 + resolution: "@biomejs/biome@npm:2.3.10" + dependencies: + "@biomejs/cli-darwin-arm64": "npm:2.3.10" + "@biomejs/cli-darwin-x64": "npm:2.3.10" + "@biomejs/cli-linux-arm64": "npm:2.3.10" + "@biomejs/cli-linux-arm64-musl": "npm:2.3.10" + "@biomejs/cli-linux-x64": "npm:2.3.10" + "@biomejs/cli-linux-x64-musl": "npm:2.3.10" + "@biomejs/cli-win32-arm64": "npm:2.3.10" + "@biomejs/cli-win32-x64": "npm:2.3.10" + dependenciesMeta: + "@biomejs/cli-darwin-arm64": + optional: true + "@biomejs/cli-darwin-x64": + optional: true + "@biomejs/cli-linux-arm64": + optional: true + "@biomejs/cli-linux-arm64-musl": + optional: true + "@biomejs/cli-linux-x64": + optional: true + "@biomejs/cli-linux-x64-musl": + optional: true + "@biomejs/cli-win32-arm64": + optional: true + "@biomejs/cli-win32-x64": + optional: true + bin: + biome: bin/biome + checksum: 10/c34427f06eee8559081fa7c93d79ddffc6d560ee6c8854cd1055907652ede717ed3944f314921e834d3f16ba20c75a98bd34b0d3e8712a7c30ac83fb2fe3903f + languageName: node + linkType: hard + +"@biomejs/cli-darwin-arm64@npm:2.3.10": + version: 2.3.10 + resolution: "@biomejs/cli-darwin-arm64@npm:2.3.10" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@biomejs/cli-darwin-x64@npm:2.3.10": + version: 2.3.10 + resolution: "@biomejs/cli-darwin-x64@npm:2.3.10" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@biomejs/cli-linux-arm64-musl@npm:2.3.10": + version: 2.3.10 + resolution: "@biomejs/cli-linux-arm64-musl@npm:2.3.10" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@biomejs/cli-linux-arm64@npm:2.3.10": + version: 2.3.10 + resolution: "@biomejs/cli-linux-arm64@npm:2.3.10" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@biomejs/cli-linux-x64-musl@npm:2.3.10": + version: 2.3.10 + resolution: "@biomejs/cli-linux-x64-musl@npm:2.3.10" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@biomejs/cli-linux-x64@npm:2.3.10": + version: 2.3.10 + resolution: "@biomejs/cli-linux-x64@npm:2.3.10" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@biomejs/cli-win32-arm64@npm:2.3.10": + version: 2.3.10 + resolution: "@biomejs/cli-win32-arm64@npm:2.3.10" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@biomejs/cli-win32-x64@npm:2.3.10": + version: 2.3.10 + resolution: "@biomejs/cli-win32-x64@npm:2.3.10" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@biomejs/js-api@npm:3.0.0": version: 3.0.0 resolution: "@biomejs/js-api@npm:3.0.0" @@ -1850,7 +1865,6 @@ __metadata: version: 0.0.0-use.local resolution: "@calcom/api-proxy@workspace:apps/api" dependencies: - "@calcom/eslint-config": "workspace:*" connect: "npm:3.7.0" http: "npm:0.0.1-security" http-proxy-middleware: "npm:2.0.9" @@ -1862,7 +1876,7 @@ __metadata: resolution: "@calcom/api-v2@workspace:apps/api/v2" dependencies: "@axiomhq/winston": "npm:1.2.0" - "@calcom/eslint-config": "workspace:*" + "@biomejs/biome": "npm:^2.3.8" "@calcom/platform-constants": "workspace:*" "@calcom/platform-enums": "workspace:*" "@calcom/platform-libraries": "workspace:*" @@ -1896,8 +1910,6 @@ __metadata: "@types/luxon": "npm:3.4.2" "@types/passport-jwt": "npm:3.0.13" "@types/supertest": "npm:2.0.16" - "@typescript-eslint/eslint-plugin": "npm:6.21.0" - "@typescript-eslint/parser": "npm:6.21.0" axios: "npm:1.13.2" body-parser: "npm:1.20.2" bull: "npm:4.15.1" @@ -1919,7 +1931,6 @@ __metadata: node-mocks-http: "npm:1.16.2" passport: "npm:0.7.0" passport-jwt: "npm:4.0.1" - prettier: "npm:2.8.7" qs-stringify: "npm:1.2.1" querystring: "npm:0.2.1" reflect-metadata: "npm:0.1.14" @@ -1946,7 +1957,6 @@ __metadata: "@calcom/app-store": "workspace:*" "@calcom/dayjs": "workspace:*" "@calcom/emails": "workspace:*" - "@calcom/eslint-config": "workspace:*" "@calcom/features": "workspace:*" "@calcom/lib": "workspace:*" "@calcom/prisma": "workspace:*" @@ -1974,11 +1984,10 @@ __metadata: version: 0.0.0-use.local resolution: "@calcom/app-store-cli@workspace:packages/app-store-cli" dependencies: + "@biomejs/biome": "npm:^2.3.8" "@calcom/lib": "workspace:*" "@types/react": "npm:18.0.26" chokidar: "npm:3.6.0" - eslint-plugin-react: "npm:7.37.5" - eslint-plugin-react-hooks: "npm:4.6.0" ink: "npm:3.2.0" ink-select-input: "npm:4.2.1" ink-text-input: "npm:4.0.3" @@ -1997,7 +2006,6 @@ __metadata: dependencies: "@calcom/dailyvideo": "workspace:*" "@calcom/dayjs": "workspace:*" - "@calcom/eslint-config": "workspace:*" "@calcom/features": "workspace:*" "@calcom/lib": "workspace:*" "@calcom/office365video": "workspace:*" @@ -2103,7 +2111,6 @@ __metadata: resolution: "@calcom/base@workspace:packages/platform/examples/base" dependencies: "@calcom/atoms": "workspace:*" - "@calcom/eslint-config": "workspace:*" "@playwright/test": "npm:1.57.0" "@prisma/client": "npm:6.16.1" "@tailwindcss/postcss": "npm:4.1.15" @@ -2205,19 +2212,8 @@ __metadata: version: 0.0.0-use.local resolution: "@calcom/config@workspace:packages/config" dependencies: - "@calcom/eslint-plugin-eslint": "workspace:*" "@tailwindcss/typography": "npm:0.5.4" "@todesktop/tailwind-variants": "npm:1.0.1" - "@trivago/prettier-plugin-sort-imports": "npm:4.1.1" - "@typescript-eslint/eslint-plugin": "npm:5.52.0" - "@typescript-eslint/parser": "npm:5.52.0" - eslint-config-next: "npm:13.5.11" - eslint-config-prettier: "npm:8.6.0" - eslint-config-turbo: "npm:0.0.7" - eslint-plugin-playwright: "npm:0.12.0" - eslint-plugin-prettier: "npm:4.2.1" - prettier: "npm:2.8.7" - prettier-plugin-tailwindcss: "npm:0.2.5" tailwind-scrollbar: "npm:4.0.2" tailwindcss-radix: "npm:4.0.2" tw-animate-css: "npm:1.4.0" @@ -2400,7 +2396,6 @@ __metadata: dependencies: "@calcom/embed-core": "workspace:*" "@calcom/embed-snippet": "workspace:*" - "@calcom/eslint-config": "workspace:*" "@playwright/test": "npm:1.57.0" "@types/react": "npm:18.0.26" "@types/react-dom": "npm:18.2.6" @@ -2419,52 +2414,16 @@ __metadata: resolution: "@calcom/embed-snippet@workspace:packages/embeds/embed-snippet" dependencies: "@calcom/embed-core": "workspace:*" - "@calcom/eslint-config": "workspace:*" typescript: "npm:5.9.2" vite: "npm:4.5.14" languageName: unknown linkType: soft -"@calcom/eslint-config@workspace:*, @calcom/eslint-config@workspace:packages/eslint-config": - version: 0.0.0-use.local - resolution: "@calcom/eslint-config@workspace:packages/eslint-config" - dependencies: - "@eslint/js": "npm:9.36.0" - "@next/eslint-plugin-next": "npm:15.4.5" - "@typescript-eslint/eslint-plugin": "npm:8.39.0" - "@typescript-eslint/parser": "npm:8.39.0" - eslint: "npm:9.36.0" - eslint-config-prettier: "npm:9.1.2" - eslint-import-resolver-typescript: "npm:4.4.4" - eslint-plugin-import: "npm:2.32.0" - eslint-plugin-only-warn: "npm:1.1.0" - eslint-plugin-react: "npm:7.37.5" - eslint-plugin-react-hooks: "npm:5.2.0" - eslint-plugin-turbo: "npm:2.5.5" - globals: "npm:15.15.0" - typescript: "npm:5.9.2" - typescript-eslint: "npm:8.40.0" - languageName: unknown - linkType: soft - -"@calcom/eslint-plugin-eslint@workspace:*, @calcom/eslint-plugin-eslint@workspace:packages/eslint-plugin": - version: 0.0.0-use.local - resolution: "@calcom/eslint-plugin-eslint@workspace:packages/eslint-plugin" - dependencies: - "@types/eslint": "npm:8.4.5" - "@typescript-eslint/parser": "npm:5.52.0" - "@typescript-eslint/utils": "npm:5.52.0" - ts-node-maintained: "npm:10.9.5" - typescript: "npm:5.9.2" - languageName: unknown - linkType: soft - "@calcom/example-app-credential-sync@workspace:example-apps/credential-sync": version: 0.0.0-use.local resolution: "@calcom/example-app-credential-sync@workspace:example-apps/credential-sync" dependencies: "@calcom/atoms": "workspace:*" - "@calcom/eslint-config": "workspace:*" "@prisma/client": "npm:6.16.1" "@types/node": "npm:20.17.23" "@types/react": "npm:18.0.26" @@ -2587,6 +2546,7 @@ __metadata: react-select: "npm:5.8.0" react-sticky-box: "npm:2.0.4" recharts: "npm:3.0.2" + stripe: "npm:9.16.0" stripe-event-types: "npm:3.1.0" trigger.dev: "npm:4.1.0" web-push: "npm:3.6.7" @@ -2809,7 +2769,6 @@ __metadata: dependencies: "@calcom/config": "workspace:*" "@calcom/dayjs": "workspace:*" - "@calcom/eslint-config": "workspace:*" "@calcom/tsconfig": "workspace:*" "@calcom/types": "workspace:*" "@faker-js/faker": "npm:7.6.0" @@ -3139,7 +3098,6 @@ __metadata: version: 0.0.0-use.local resolution: "@calcom/routing-forms@workspace:packages/app-store/routing-forms" dependencies: - "@calcom/eslint-config": "workspace:*" "@calcom/lib": "workspace:*" "@calcom/types": "workspace:*" "@types/json-logic-js": "npm:1.2.1" @@ -3293,7 +3251,6 @@ __metadata: version: 0.0.0-use.local resolution: "@calcom/trpc@workspace:packages/trpc" dependencies: - "@calcom/eslint-config": "workspace:*" "@tanstack/react-query": "npm:5.17.19" "@trpc/client": "npm:11.0.0-next-beta.222" "@trpc/next": "npm:11.0.0-next-beta.222" @@ -3343,8 +3300,8 @@ __metadata: version: 0.0.0-use.local resolution: "@calcom/ui@workspace:packages/ui" dependencies: + "@biomejs/biome": "npm:^2.3.8" "@calcom/config": "workspace:*" - "@calcom/eslint-config": "workspace:*" "@calcom/lib": "workspace:*" "@calcom/tsconfig": "workspace:*" "@formkit/auto-animate": "npm:1.0.0-beta.5" @@ -3454,7 +3411,6 @@ __metadata: "@calcom/embed-core": "workspace:*" "@calcom/embed-react": "workspace:*" "@calcom/embed-snippet": "workspace:*" - "@calcom/eslint-config": "workspace:*" "@calcom/features": "workspace:*" "@calcom/lib": "workspace:*" "@calcom/platform-enums": "workspace:*" @@ -4332,7 +4288,7 @@ __metadata: languageName: node linkType: hard -"@emnapi/core@npm:^1.4.3, @emnapi/core@npm:^1.5.0": +"@emnapi/core@npm:^1.5.0": version: 1.6.0 resolution: "@emnapi/core@npm:1.6.0" dependencies: @@ -4342,7 +4298,7 @@ __metadata: languageName: node linkType: hard -"@emnapi/runtime@npm:^1.2.0, @emnapi/runtime@npm:^1.4.3, @emnapi/runtime@npm:^1.5.0": +"@emnapi/runtime@npm:^1.2.0, @emnapi/runtime@npm:^1.5.0": version: 1.6.0 resolution: "@emnapi/runtime@npm:1.6.0" dependencies: @@ -5022,92 +4978,6 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.7.0, @eslint-community/eslint-utils@npm:^4.8.0": - version: 4.9.0 - resolution: "@eslint-community/eslint-utils@npm:4.9.0" - dependencies: - eslint-visitor-keys: "npm:^3.4.3" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10/89b1eb3137e14c379865e60573f524fcc0ee5c4b0c7cd21090673e75e5a720f14b92f05ab2d02704c2314b67e67b6f96f3bb209ded6b890ced7b667aa4bf1fa2 - languageName: node - linkType: hard - -"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1, @eslint-community/regexpp@npm:^4.5.1": - version: 4.12.1 - resolution: "@eslint-community/regexpp@npm:4.12.1" - checksum: 10/c08f1dd7dd18fbb60bdd0d85820656d1374dd898af9be7f82cb00451313402a22d5e30569c150315b4385907cdbca78c22389b2a72ab78883b3173be317620cc - languageName: node - linkType: hard - -"@eslint/config-array@npm:^0.21.0": - version: 0.21.0 - resolution: "@eslint/config-array@npm:0.21.0" - dependencies: - "@eslint/object-schema": "npm:^2.1.6" - debug: "npm:^4.3.1" - minimatch: "npm:^3.1.2" - checksum: 10/f5a499e074ecf4b4a5efdca655418a12079d024b77d02fd35868eeb717c5bfdd8e32c6e8e1dd125330233a878026edda8062b13b4310169ba5bfee9623a67aa0 - languageName: node - linkType: hard - -"@eslint/config-helpers@npm:^0.3.1": - version: 0.3.1 - resolution: "@eslint/config-helpers@npm:0.3.1" - checksum: 10/fc1a90ef6180aa4b5187cee04cfc566abb2a32b77ca3e7eeb4312c7388f6898221adaf8451d9ddb22e0b8860d900fefb1eb1435e4f32f8d8732de87f14605f8f - languageName: node - linkType: hard - -"@eslint/core@npm:^0.15.2": - version: 0.15.2 - resolution: "@eslint/core@npm:0.15.2" - dependencies: - "@types/json-schema": "npm:^7.0.15" - checksum: 10/41d6273bbc6897cca34a2ca4e80a24bf6f1d43519456ebaa3c38f187da2d9e06f442c64f6e2a2813f055dce35e5cea33a21d0ac3b5b0830b7165641c640faf5d - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^3.3.1": - version: 3.3.1 - resolution: "@eslint/eslintrc@npm:3.3.1" - dependencies: - ajv: "npm:^6.12.4" - debug: "npm:^4.3.2" - espree: "npm:^10.0.1" - globals: "npm:^14.0.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" - minimatch: "npm:^3.1.2" - strip-json-comments: "npm:^3.1.1" - checksum: 10/cc240addbab3c5fceaa65b2c8d5d4fd77ddbbf472c2f74f0270b9d33263dc9116840b6099c46b64c9680301146250439b044ed79278a1bcc557da412a4e3c1bb - languageName: node - linkType: hard - -"@eslint/js@npm:9.36.0": - version: 9.36.0 - resolution: "@eslint/js@npm:9.36.0" - checksum: 10/a0542f529f87b9ad69ef85c47b0c070b763591a61773b131a9d1d53934a587f0708c05a1a8f48a6805486004a4922c91d696c1e4835ff61f8750ffbded2f0c30 - languageName: node - linkType: hard - -"@eslint/object-schema@npm:^2.1.6": - version: 2.1.6 - resolution: "@eslint/object-schema@npm:2.1.6" - checksum: 10/266085c8d3fa6cd99457fb6350dffb8ee39db9c6baf28dc2b86576657373c92a568aec4bae7d142978e798b74c271696672e103202d47a0c148da39154351ed6 - languageName: node - linkType: hard - -"@eslint/plugin-kit@npm:^0.3.5": - version: 0.3.5 - resolution: "@eslint/plugin-kit@npm:0.3.5" - dependencies: - "@eslint/core": "npm:^0.15.2" - levn: "npm:^0.4.1" - checksum: 10/b8552d79c3091446b07d8b87a9a8ccb8cdee4d933c0ed46b8f61029c3382246fec8d04ea7d1e61656d9275263205ccaa40019fd7581bbce897eca3eda42d5dad - languageName: node - linkType: hard - "@evyweb/ioctopus@npm:1.2.0": version: 1.2.0 resolution: "@evyweb/ioctopus@npm:1.2.0" @@ -6001,37 +5871,6 @@ __metadata: languageName: node linkType: hard -"@humanfs/core@npm:^0.19.1": - version: 0.19.1 - resolution: "@humanfs/core@npm:0.19.1" - checksum: 10/270d936be483ab5921702623bc74ce394bf12abbf57d9145a69e8a0d1c87eb1c768bd2d93af16c5705041e257e6d9cc7529311f63a1349f3678abc776fc28523 - languageName: node - linkType: hard - -"@humanfs/node@npm:^0.16.6": - version: 0.16.7 - resolution: "@humanfs/node@npm:0.16.7" - dependencies: - "@humanfs/core": "npm:^0.19.1" - "@humanwhocodes/retry": "npm:^0.4.0" - checksum: 10/b3633d3dce898592cac515ba5e6693c78e6be92863541d3eaf2c009b10f52b2fa62ff6e6e06f240f2447ddbe7b5f1890bc34e9308470675c876eee207553a08d - languageName: node - linkType: hard - -"@humanwhocodes/module-importer@npm:^1.0.1": - version: 1.0.1 - resolution: "@humanwhocodes/module-importer@npm:1.0.1" - checksum: 10/e993950e346331e5a32eefb27948ecdee2a2c4ab3f072b8f566cd213ef485dd50a3ca497050608db91006f5479e43f91a439aef68d2a313bd3ded06909c7c5b3 - languageName: node - linkType: hard - -"@humanwhocodes/retry@npm:^0.4.0, @humanwhocodes/retry@npm:^0.4.2": - version: 0.4.3 - resolution: "@humanwhocodes/retry@npm:0.4.3" - checksum: 10/0b32cfd362bea7a30fbf80bb38dcaf77fee9c2cae477ee80b460871d03590110ac9c77d654f04ec5beaf71b6f6a89851bdf6c1e34ccdf2f686bd86fcd97d9e61 - languageName: node - linkType: hard - "@img/colour@npm:^1.0.0": version: 1.0.0 resolution: "@img/colour@npm:1.0.0" @@ -8180,17 +8019,6 @@ __metadata: languageName: node linkType: hard -"@napi-rs/wasm-runtime@npm:^0.2.11": - version: 0.2.12 - resolution: "@napi-rs/wasm-runtime@npm:0.2.12" - dependencies: - "@emnapi/core": "npm:^1.4.3" - "@emnapi/runtime": "npm:^1.4.3" - "@tybys/wasm-util": "npm:^0.10.0" - checksum: 10/5fd518182427980c28bc724adf06c5f32f9a8915763ef560b5f7d73607d30cd15ac86d0cbd2eb80d4cfab23fc80d0876d89ca36a9daadcb864bc00917c94187c - languageName: node - linkType: hard - "@napi-rs/wasm-runtime@npm:^1.0.7": version: 1.0.7 resolution: "@napi-rs/wasm-runtime@npm:1.0.7" @@ -8531,24 +8359,6 @@ __metadata: languageName: node linkType: hard -"@next/eslint-plugin-next@npm:13.5.11": - version: 13.5.11 - resolution: "@next/eslint-plugin-next@npm:13.5.11" - dependencies: - glob: "npm:7.1.7" - checksum: 10/113d694eef1551a01a725011233053684da61a8b4753f4ce06a5ad31db50aadd51f56e0b5b0d08ebc7c0f07dd7ad1eb93177af32f86141e477d562005eb459d5 - languageName: node - linkType: hard - -"@next/eslint-plugin-next@npm:15.4.5": - version: 15.4.5 - resolution: "@next/eslint-plugin-next@npm:15.4.5" - dependencies: - fast-glob: "npm:3.3.1" - checksum: 10/9d9ec723a3a1d0e934263d3e059e673c0ef36f62e763799612a959fcb10ecc5e45d3edd9b20149a1967f1604235bf2be55401cf4ffcfb82a6f1d9b8f944bfebb - languageName: node - linkType: hard - "@next/swc-darwin-arm64@npm:14.2.33": version: 14.2.33 resolution: "@next/swc-darwin-arm64@npm:14.2.33" @@ -10294,20 +10104,6 @@ __metadata: languageName: node linkType: hard -"@pkgr/utils@npm:^2.3.1": - version: 2.3.1 - resolution: "@pkgr/utils@npm:2.3.1" - dependencies: - cross-spawn: "npm:^7.0.3" - is-glob: "npm:^4.0.3" - open: "npm:^8.4.0" - picocolors: "npm:^1.0.0" - tiny-glob: "npm:^0.2.9" - tslib: "npm:^2.4.0" - checksum: 10/0a86fcdf4760abe20719a85f882a1532253cdff3537b91179bd8f4e1e8f003cf72878211fd4afbe00705463a739f516a74cc5b7daa3fd01f0318fc4829d10f48 - languageName: node - linkType: hard - "@playwright/test@npm:1.57.0": version: 1.57.0 resolution: "@playwright/test@npm:1.57.0" @@ -13174,20 +12970,6 @@ __metadata: languageName: node linkType: hard -"@rtsao/scc@npm:^1.1.0": - version: 1.1.0 - resolution: "@rtsao/scc@npm:1.1.0" - checksum: 10/17d04adf404e04c1e61391ed97bca5117d4c2767a76ae3e879390d6dec7b317fcae68afbf9e98badee075d0b64fa60f287729c4942021b4d19cd01db77385c01 - languageName: node - linkType: hard - -"@rushstack/eslint-patch@npm:^1.3.3": - version: 1.7.2 - resolution: "@rushstack/eslint-patch@npm:1.7.2" - checksum: 10/9a2da86b47bba118ad386417291d3960bc7470f78302be6b38c6b03f28a087e789e875c56a25eb1854779d55cadc167880739b36a540b1824bdb7c71283fd7a1 - languageName: node - linkType: hard - "@rushstack/node-core-library@npm:3.62.0": version: 3.62.0 resolution: "@rushstack/node-core-library@npm:3.62.0" @@ -15604,26 +15386,6 @@ __metadata: languageName: node linkType: hard -"@trivago/prettier-plugin-sort-imports@npm:4.1.1": - version: 4.1.1 - resolution: "@trivago/prettier-plugin-sort-imports@npm:4.1.1" - dependencies: - "@babel/generator": "npm:7.17.7" - "@babel/parser": "npm:^7.20.5" - "@babel/traverse": "npm:7.17.3" - "@babel/types": "npm:7.17.0" - javascript-natural-sort: "npm:0.7.1" - lodash: "npm:^4.17.21" - peerDependencies: - "@vue/compiler-sfc": 3.x - prettier: 2.x - peerDependenciesMeta: - "@vue/compiler-sfc": - optional: true - checksum: 10/e3f944c5e5c55b11a91cee0f8123bf337712937d0393e10afcd48ba7788d062c4692452b10e6fd783de4b31b6b17c209fd081fdeac99663545b159001e1c082b - languageName: node - linkType: hard - "@trpc/client@npm:11.0.0-next-beta.222": version: 11.0.0-next-beta.222 resolution: "@trpc/client@npm:11.0.0-next-beta.222" @@ -15714,7 +15476,7 @@ __metadata: languageName: node linkType: hard -"@tybys/wasm-util@npm:^0.10.0, @tybys/wasm-util@npm:^0.10.1": +"@tybys/wasm-util@npm:^0.10.1": version: 0.10.1 resolution: "@tybys/wasm-util@npm:0.10.1" dependencies: @@ -16005,7 +15767,7 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:*, @types/eslint@npm:8.4.5": +"@types/eslint@npm:*": version: 8.4.5 resolution: "@types/eslint@npm:8.4.5" dependencies: @@ -16024,7 +15786,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5, @types/estree@npm:^1.0.6": +"@types/estree@npm:*, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": version: 1.0.8 resolution: "@types/estree@npm:1.0.8" checksum: 10/25a4c16a6752538ffde2826c2cc0c6491d90e69cd6187bef4a006dd2c3c45469f049e643d7e516c515f21484dc3d48fd5c870be158a5beb72f5baf3dc43e4099 @@ -16223,20 +15985,13 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.6, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.6, @types/json-schema@npm:^7.0.8": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 languageName: node linkType: hard -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: 10/4e5aed58cabb2bbf6f725da13421aa50a49abb6bc17bfab6c31b8774b073fa7b50d557c61f961a09a85f6056151190f8ac95f13f5b48136ba5841f7d4484ec56 - languageName: node - linkType: hard - "@types/jsonfile@npm:*": version: 6.1.4 resolution: "@types/jsonfile@npm:6.1.4" @@ -16631,13 +16386,6 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0": - version: 7.7.0 - resolution: "@types/semver@npm:7.7.0" - checksum: 10/ee4514c6c852b1c38f951239db02f9edeea39f5310fad9396a00b51efa2a2d96b3dfca1ae84c88181ea5b7157c57d32d7ef94edacee36fbf975546396b85ba5b - languageName: node - linkType: hard - "@types/send@npm:*": version: 0.17.4 resolution: "@types/send@npm:0.17.4" @@ -16874,337 +16622,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:5.52.0": - version: 5.52.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.52.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:5.52.0" - "@typescript-eslint/type-utils": "npm:5.52.0" - "@typescript-eslint/utils": "npm:5.52.0" - debug: "npm:^4.3.4" - grapheme-splitter: "npm:^1.0.4" - ignore: "npm:^5.2.0" - natural-compare-lite: "npm:^1.4.0" - regexpp: "npm:^3.2.0" - semver: "npm:^7.3.7" - tsutils: "npm:^3.21.0" - peerDependencies: - "@typescript-eslint/parser": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/0b90e24a0416655a8a6f2c52988a5cb45a363709e4cbd03ba1eb42d654557c6f9ed6cab452b32832ecd7871ab99610a211715254bf4af31c78edf4adc5c059b6 - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" - dependencies: - "@eslint-community/regexpp": "npm:^4.5.1" - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/type-utils": "npm:6.21.0" - "@typescript-eslint/utils": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.4" - natural-compare: "npm:^1.4.0" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/a57de0f630789330204cc1531f86cfc68b391cafb1ba67c8992133f1baa2a09d629df66e71260b040de4c9a3ff1252952037093c4128b0d56c4dbb37720b4c1d - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:8.39.0": - version: 8.39.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.39.0" - dependencies: - "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.39.0" - "@typescript-eslint/type-utils": "npm:8.39.0" - "@typescript-eslint/utils": "npm:8.39.0" - "@typescript-eslint/visitor-keys": "npm:8.39.0" - graphemer: "npm:^1.4.0" - ignore: "npm:^7.0.0" - natural-compare: "npm:^1.4.0" - ts-api-utils: "npm:^2.1.0" - peerDependencies: - "@typescript-eslint/parser": ^8.39.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10/31f879990aaedbd0eaf4ccb670c0b8d0686db8ced8fe5b58fabe509e38cd46e385b38a89a192ffb9d8486bce0ae5bf0032623149e07f07fab1b6548cbe52c373 - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:8.40.0": - version: 8.40.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.40.0" - dependencies: - "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.40.0" - "@typescript-eslint/type-utils": "npm:8.40.0" - "@typescript-eslint/utils": "npm:8.40.0" - "@typescript-eslint/visitor-keys": "npm:8.40.0" - graphemer: "npm:^1.4.0" - ignore: "npm:^7.0.0" - natural-compare: "npm:^1.4.0" - ts-api-utils: "npm:^2.1.0" - peerDependencies: - "@typescript-eslint/parser": ^8.40.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10/9df4d4ac58734a34964b791622dcb94ffc6c49c1d0f4fd0480b3fc0e026527df7167ff78a4f8bbd29089d605756c28c1a90b2f0653df34b40ac8b969bc6c92e9 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:5.52.0": - version: 5.52.0 - resolution: "@typescript-eslint/parser@npm:5.52.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:5.52.0" - "@typescript-eslint/types": "npm:5.52.0" - "@typescript-eslint/typescript-estree": "npm:5.52.0" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/7980c9d332c773748cd0a9e1383fb41538b27b04d020e2931d39ee4fd6141a85ef2da4a039d3004f64b11b56aaeae35095c49e71becb787d137f9bb53496ed0e - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:6.21.0, @typescript-eslint/parser@npm:^5.4.2 || ^6.0.0": - version: 6.21.0 - resolution: "@typescript-eslint/parser@npm:6.21.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/4d51cdbc170e72275efc5ef5fce48a81ec431e4edde8374f4d0213d8d370a06823e1a61ae31d502a5f1b0d1f48fc4d29a1b1b5c2dcf809d66d3872ccf6e46ac7 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:8.39.0": - version: 8.39.0 - resolution: "@typescript-eslint/parser@npm:8.39.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:8.39.0" - "@typescript-eslint/types": "npm:8.39.0" - "@typescript-eslint/typescript-estree": "npm:8.39.0" - "@typescript-eslint/visitor-keys": "npm:8.39.0" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10/9785994ff0cacaa168b460120177e4a78570dfbe105bfc9d27e8f58545ea07071cc8989910e72e3ae881945ad33986e004d14570824803016cc29408e9ec08b0 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:8.40.0": - version: 8.40.0 - resolution: "@typescript-eslint/parser@npm:8.40.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:8.40.0" - "@typescript-eslint/types": "npm:8.40.0" - "@typescript-eslint/typescript-estree": "npm:8.40.0" - "@typescript-eslint/visitor-keys": "npm:8.40.0" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10/1e60f70e9d02f930553db7f4684c27c376fadf345db155414a22d1a32cd21def7d36496bd63c1acbf3afbec9fb8794947e880f88c1143b83e1d3c45146cec41a - languageName: node - linkType: hard - -"@typescript-eslint/project-service@npm:8.39.0": - version: 8.39.0 - resolution: "@typescript-eslint/project-service@npm:8.39.0" - dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.39.0" - "@typescript-eslint/types": "npm:^8.39.0" - debug: "npm:^4.3.4" - peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10/990ae23308993ac5fede1e2544fb3f3938424539d40adf810574d17283211533ebdddc42eb99c463ee493208a6700283401cede50f175cce0f2159bc61de96f7 - languageName: node - linkType: hard - -"@typescript-eslint/project-service@npm:8.40.0": - version: 8.40.0 - resolution: "@typescript-eslint/project-service@npm:8.40.0" - dependencies: - "@typescript-eslint/tsconfig-utils": "npm:^8.40.0" - "@typescript-eslint/types": "npm:^8.40.0" - debug: "npm:^4.3.4" - peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10/86491aa65c1dd78c9784dddd8467601aef8be652c5fb3a901e8b1995cf07c1dbe11d0ab4610d770e3f4063c0c254a6c6aa5fb7cf724bf12fa4ee56f47f3a2955 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.52.0": - version: 5.52.0 - resolution: "@typescript-eslint/scope-manager@npm:5.52.0" - dependencies: - "@typescript-eslint/types": "npm:5.52.0" - "@typescript-eslint/visitor-keys": "npm:5.52.0" - checksum: 10/8a70d3fd1ff0989b4116aec7b9b5cd2163100153e040b826a4bd85b7c5059c19fc71f0f542446f4471d2de1de049e0d6755aca8efbb92dd5369b270b8c546225 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/scope-manager@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - checksum: 10/fe91ac52ca8e09356a71dc1a2f2c326480f3cccfec6b2b6d9154c1a90651ab8ea270b07c67df5678956c3bbf0bbe7113ab68f68f21b20912ea528b1214197395 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:8.39.0": - version: 8.39.0 - resolution: "@typescript-eslint/scope-manager@npm:8.39.0" - dependencies: - "@typescript-eslint/types": "npm:8.39.0" - "@typescript-eslint/visitor-keys": "npm:8.39.0" - checksum: 10/c2b232a172221fc787eaef12e8ac59bbe211b7273c44c7f426c5b85dabb7470df899184a61ae35eded7d8de503d6c515856e4e5c2a616e7cf7f0ccd6a43ee255 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:8.40.0": - version: 8.40.0 - resolution: "@typescript-eslint/scope-manager@npm:8.40.0" - dependencies: - "@typescript-eslint/types": "npm:8.40.0" - "@typescript-eslint/visitor-keys": "npm:8.40.0" - checksum: 10/0c5aa10208bfbb506bf3925a420c3de667298064bde400f03ee52c19cd0785dd05c2c820e05724d005737e2920d925aff0318ec3308156f9b81c84736a1fe46b - languageName: node - linkType: hard - -"@typescript-eslint/tsconfig-utils@npm:8.39.0": - version: 8.39.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.39.0" - peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10/3457da49e7292bd07b1bd41f19661ea79481f3b6f6593fb1ecf6557c38c0f5fd77df397bc096d0bad400c4142d939d5fbaf060a524f9272c749cc02c53a65852 - languageName: node - linkType: hard - -"@typescript-eslint/tsconfig-utils@npm:8.40.0": - version: 8.40.0 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.40.0" - peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10/c5a557cc83d194902140af0ddfa10b2776db3625e2c9bb609d0d720aa78a0735ff71df8bffd5c2a1b90cdada8242543c5421ad4dcd58cf2ff12717b733bcfca9 - languageName: node - linkType: hard - -"@typescript-eslint/tsconfig-utils@npm:^8.39.0, @typescript-eslint/tsconfig-utils@npm:^8.40.0": - version: 8.44.1 - resolution: "@typescript-eslint/tsconfig-utils@npm:8.44.1" - peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10/942d4bb9ec3d0f1f6c7fe0dc0fef2ae83a12b43ff3537fbd74007d0c9b80f166db2e5fa2f422f0b10ade348e330204dc70fc50e235ee66dc13ba488ac1490778 - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:5.52.0": - version: 5.52.0 - resolution: "@typescript-eslint/type-utils@npm:5.52.0" - dependencies: - "@typescript-eslint/typescript-estree": "npm:5.52.0" - "@typescript-eslint/utils": "npm:5.52.0" - debug: "npm:^4.3.4" - tsutils: "npm:^3.21.0" - peerDependencies: - eslint: "*" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/04906393bff538ee01e2d6a7a317e7e0a86dbbd4a43a50a3f32b7d0f78f7d6449aa314f308e9eda305110a2c13449061aeae69d074e48fed17bd35621f8168d6 - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/type-utils@npm:6.21.0" - dependencies: - "@typescript-eslint/typescript-estree": "npm:6.21.0" - "@typescript-eslint/utils": "npm:6.21.0" - debug: "npm:^4.3.4" - ts-api-utils: "npm:^1.0.1" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/d03fb3ee1caa71f3ce053505f1866268d7ed79ffb7fed18623f4a1253f5b8f2ffc92636d6fd08fcbaf5bd265a6de77bf192c53105131e4724643dfc910d705fc - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:8.39.0": - version: 8.39.0 - resolution: "@typescript-eslint/type-utils@npm:8.39.0" - dependencies: - "@typescript-eslint/types": "npm:8.39.0" - "@typescript-eslint/typescript-estree": "npm:8.39.0" - "@typescript-eslint/utils": "npm:8.39.0" - debug: "npm:^4.3.4" - ts-api-utils: "npm:^2.1.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10/3efe4001b6b89bc8a32245fffc16b6aa6f1a5d571d7a103991fdb9f41afb1e7a3319ff3876182658a4296032a1475f8aa7853f6ad489e1491a1dda1d5c1da95e - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:8.40.0": - version: 8.40.0 - resolution: "@typescript-eslint/type-utils@npm:8.40.0" - dependencies: - "@typescript-eslint/types": "npm:8.40.0" - "@typescript-eslint/typescript-estree": "npm:8.40.0" - "@typescript-eslint/utils": "npm:8.40.0" - debug: "npm:^4.3.4" - ts-api-utils: "npm:^2.1.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10/296c718330b2ac4408840258c30c01072de01ffe1c009be00c5049be1b19a71cbb2e258363ae349150760bcd2d34799df305b4cfc4d7f3b2fa9760ac8ffb3f75 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.52.0": - version: 5.52.0 - resolution: "@typescript-eslint/types@npm:5.52.0" - checksum: 10/c7a1bc7df8c260eea2ccfd7f39e1e6186f19eb411034f3d9e288aedf8ac3cc7d7acd60c15c78cf831c47d7af43ba3d371825a5ff3349355cd986418df743dcb7 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 10/e26da86d6f36ca5b6ef6322619f8ec55aabcd7d43c840c977ae13ae2c964c3091fc92eb33730d8be08927c9de38466c5323e78bfb270a9ff1d3611fe821046c5 - languageName: node - linkType: hard - "@typescript-eslint/types@npm:6.7.2": version: 6.7.2 resolution: "@typescript-eslint/types@npm:6.7.2" @@ -17212,64 +16629,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.39.0": - version: 8.39.0 - resolution: "@typescript-eslint/types@npm:8.39.0" - checksum: 10/b08a42e8b5cc57f9b950150433386ac5da03d7f5e24b743fa0cb55f5672f314b5defa3cf9b1ed82af8e4de1265c9c79deab304910104091a24d41c70f2d98ff9 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:8.40.0": - version: 8.40.0 - resolution: "@typescript-eslint/types@npm:8.40.0" - checksum: 10/f3931d0920a42b3bc69e9cdeb67a0c710597271cdd9d7c736302bdc52d21df1c962082df7cd712eeabd2c47658415d0a4b7d72f819cb38f82f4e234b48dbaa57 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:^8.39.0, @typescript-eslint/types@npm:^8.40.0": - version: 8.44.1 - resolution: "@typescript-eslint/types@npm:8.44.1" - checksum: 10/acebff929b2c64254c430fff54d8d135c9f47bcc20062fd3e52f64952b0ef973db9582812025f5314940889ae4c4a8798726a477b94fbda31881109687567528 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:5.52.0": - version: 5.52.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.52.0" - dependencies: - "@typescript-eslint/types": "npm:5.52.0" - "@typescript-eslint/visitor-keys": "npm:5.52.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - semver: "npm:^7.3.7" - tsutils: "npm:^3.21.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/73dc368de3d4e54c8a9c9b3c260b9f1b9b6e0305774b14f13fed8e1cffe7c6d7c652a52b4fbdc06b4386d643bb89d87491da19b305ab477ba82db6e2c4df65f2 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - minimatch: "npm:9.0.3" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/b32fa35fca2a229e0f5f06793e5359ff9269f63e9705e858df95d55ca2cd7fdb5b3e75b284095a992c48c5fc46a1431a1a4b6747ede2dd08929dc1cbacc589b8 - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:6.7.2": version: 6.7.2 resolution: "@typescript-eslint/typescript-estree@npm:6.7.2" @@ -17288,131 +16647,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.39.0": - version: 8.39.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.39.0" - dependencies: - "@typescript-eslint/project-service": "npm:8.39.0" - "@typescript-eslint/tsconfig-utils": "npm:8.39.0" - "@typescript-eslint/types": "npm:8.39.0" - "@typescript-eslint/visitor-keys": "npm:8.39.0" - debug: "npm:^4.3.4" - fast-glob: "npm:^3.3.2" - is-glob: "npm:^4.0.3" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^2.1.0" - peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10/7e9dc461fe692a1b3a17fe0f8f3d9a361f3af0df115c2e3f72c82ee271d37107c1cddeeb976707d6fc3e24e87431c381d6045de5c187aff92c71847a22118ee8 - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:8.40.0": - version: 8.40.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.40.0" - dependencies: - "@typescript-eslint/project-service": "npm:8.40.0" - "@typescript-eslint/tsconfig-utils": "npm:8.40.0" - "@typescript-eslint/types": "npm:8.40.0" - "@typescript-eslint/visitor-keys": "npm:8.40.0" - debug: "npm:^4.3.4" - fast-glob: "npm:^3.3.2" - is-glob: "npm:^4.0.3" - minimatch: "npm:^9.0.4" - semver: "npm:^7.6.0" - ts-api-utils: "npm:^2.1.0" - peerDependencies: - typescript: ">=4.8.4 <6.0.0" - checksum: 10/2e61ecfecb933f644799a7c11e4c7a730df57290c8d0482082cff7739b2401b0cf3b1ebef7b08a54a90285978957a49850d1a53061e8770164da651172ebee32 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:5.52.0": - version: 5.52.0 - resolution: "@typescript-eslint/utils@npm:5.52.0" - dependencies: - "@types/json-schema": "npm:^7.0.9" - "@types/semver": "npm:^7.3.12" - "@typescript-eslint/scope-manager": "npm:5.52.0" - "@typescript-eslint/types": "npm:5.52.0" - "@typescript-eslint/typescript-estree": "npm:5.52.0" - eslint-scope: "npm:^5.1.1" - eslint-utils: "npm:^3.0.0" - semver: "npm:^7.3.7" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10/fdd12074767893fa7329c2f13b6340ef3b2775274df7bb0735af67e7b7d04ef1d270caab56f3ef222fc3870743547e7b7d56342432d466b62620e98c09e50d61 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/utils@npm:6.21.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - "@types/json-schema": "npm:^7.0.12" - "@types/semver": "npm:^7.5.0" - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - semver: "npm:^7.5.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: 10/b404a2c55a425a79d054346ae123087d30c7ecf7ed7abcf680c47bf70c1de4fabadc63434f3f460b2fa63df76bc9e4a0b9fa2383bb8a9fcd62733fb5c4e4f3e3 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:8.39.0": - version: 8.39.0 - resolution: "@typescript-eslint/utils@npm:8.39.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.7.0" - "@typescript-eslint/scope-manager": "npm:8.39.0" - "@typescript-eslint/types": "npm:8.39.0" - "@typescript-eslint/typescript-estree": "npm:8.39.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10/ed340f36fa0788fbc2ca1be6676e05be8f3f91497617701f0a77b61b94622f6ea3606fff4871623dfde261811cccc30e4dbe567f9400d056185a7f47054d903c - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:8.40.0": - version: 8.40.0 - resolution: "@typescript-eslint/utils@npm:8.40.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.7.0" - "@typescript-eslint/scope-manager": "npm:8.40.0" - "@typescript-eslint/types": "npm:8.40.0" - "@typescript-eslint/typescript-estree": "npm:8.40.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10/b4cd1e6a4f55cc6475189de12e6bd418080a227e794745a2af304ab21655b031c28dae6387d4e9b54dd2f420696cec4f77cca9c66db405ed2281e0e09c95ba1c - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.52.0": - version: 5.52.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.52.0" - dependencies: - "@typescript-eslint/types": "npm:5.52.0" - eslint-visitor-keys: "npm:^3.3.0" - checksum: 10/d53503248bd31f4396172111203277ad3d02e1c0cd9e191997194eac47638a9c0068ede388e1b4358527bd1d3ad329be9cc427f93d1ea449732650a332f77337 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/30422cdc1e2ffad203df40351a031254b272f9c6f2b7e02e9bfa39e3fc2c7b1c6130333b0057412968deda17a3a68a578a78929a8139c6acef44d9d841dc72e1 - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:6.7.2": version: 6.7.2 resolution: "@typescript-eslint/visitor-keys@npm:6.7.2" @@ -17423,26 +16657,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.39.0": - version: 8.39.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.39.0" - dependencies: - "@typescript-eslint/types": "npm:8.39.0" - eslint-visitor-keys: "npm:^4.2.1" - checksum: 10/2eb89b9e4d531d52de414591869bc208b45dd71b5f758302f176ef92bc3b922e60be5a046a2788cc0e16724631b2dc95aad849b866716a9c7a6361f994c97379 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:8.40.0": - version: 8.40.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.40.0" - dependencies: - "@typescript-eslint/types": "npm:8.40.0" - eslint-visitor-keys: "npm:^4.2.1" - checksum: 10/191f47998001a5e9cdde7491b0215d9c6c45c637aedd7d32cafd35ce2a4a0f4b8582edab015e09238f48e025a788b99efd8e70e4e3200e32143f91c95112abcd - languageName: node - linkType: hard - "@ungap/structured-clone@npm:^1.0.0": version: 1.3.0 resolution: "@ungap/structured-clone@npm:1.3.0" @@ -17475,141 +16689,6 @@ __metadata: languageName: node linkType: hard -"@unrs/resolver-binding-android-arm-eabi@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.11.1" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-android-arm64@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-android-arm64@npm:1.11.1" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-darwin-arm64@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.11.1" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-darwin-x64@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-darwin-x64@npm:1.11.1" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-freebsd-x64@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.11.1" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.11.1" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.11.1" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.11.1" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.11.1" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.11.1" - conditions: os=linux & cpu=ppc64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.11.1" - conditions: os=linux & cpu=riscv64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.11.1" - conditions: os=linux & cpu=riscv64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.11.1" - conditions: os=linux & cpu=s390x & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.11.1" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@unrs/resolver-binding-linux-x64-musl@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.11.1" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@unrs/resolver-binding-wasm32-wasi@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.11.1" - dependencies: - "@napi-rs/wasm-runtime": "npm:^0.2.11" - conditions: cpu=wasm32 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.11.1" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.11.1" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1": - version: 1.11.1 - resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.11.1" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@upstash/redis@npm:1.35.2": version: 1.35.2 resolution: "@upstash/redis@npm:1.35.2" @@ -18261,7 +17340,7 @@ __metadata: languageName: node linkType: hard -"acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.3.1, acorn-jsx@npm:^5.3.2": +"acorn-jsx@npm:^5.0.0, acorn-jsx@npm:^5.3.1": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" peerDependencies: @@ -18442,7 +17521,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.12.4, ajv@npm:^6.12.5, ajv@npm:~6.12.6": +"ajv@npm:^6.12.5, ajv@npm:~6.12.6": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -18666,7 +17745,7 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.0.0, aria-query@npm:^5.3.0": +"aria-query@npm:^5.0.0": version: 5.3.0 resolution: "aria-query@npm:5.3.0" dependencies: @@ -18699,22 +17778,6 @@ __metadata: languageName: node linkType: hard -"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7, array-includes@npm:^3.1.8, array-includes@npm:^3.1.9": - version: 3.1.9 - resolution: "array-includes@npm:3.1.9" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.24.0" - es-object-atoms: "npm:^1.1.1" - get-intrinsic: "npm:^1.3.0" - is-string: "npm:^1.1.1" - math-intrinsics: "npm:^1.1.0" - checksum: 10/8bfe9a58df74f326b4a76b04ee05c13d871759e888b4ee8f013145297cf5eb3c02cfa216067ebdaac5d74eb9763ac5cad77cdf2773b8ab475833701e032173aa - languageName: node - linkType: hard - "array-timsort@npm:^1.0.3": version: 1.0.3 resolution: "array-timsort@npm:1.0.3" @@ -18729,72 +17792,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlast@npm:^1.2.5": - version: 1.2.5 - resolution: "array.prototype.findlast@npm:1.2.5" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - es-shim-unscopables: "npm:^1.0.2" - checksum: 10/7dffcc665aa965718ad6de7e17ac50df0c5e38798c0a5bf9340cf24feb8594df6ec6f3fcbe714c1577728a1b18b5704b15669474b27bceeca91ef06ce2a23c31 - languageName: node - linkType: hard - -"array.prototype.findlastindex@npm:^1.2.6": - version: 1.2.6 - resolution: "array.prototype.findlastindex@npm:1.2.6" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.9" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.1.1" - es-shim-unscopables: "npm:^1.1.0" - checksum: 10/5ddb6420e820bef6ddfdcc08ce780d0fd5e627e97457919c27e32359916de5a11ce12f7c55073555e503856618eaaa70845d6ca11dcba724766f38eb1c22f7a2 - languageName: node - linkType: hard - -"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.3": - version: 1.3.3 - resolution: "array.prototype.flat@npm:1.3.3" - dependencies: - call-bind: "npm:^1.0.8" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-shim-unscopables: "npm:^1.0.2" - checksum: 10/f9b992fa0775d8f7c97abc91eb7f7b2f0ed8430dd9aeb9fdc2967ac4760cdd7fc2ef7ead6528fef40c7261e4d790e117808ce0d3e7e89e91514d4963a531cd01 - languageName: node - linkType: hard - -"array.prototype.flatmap@npm:^1.3.2, array.prototype.flatmap@npm:^1.3.3": - version: 1.3.3 - resolution: "array.prototype.flatmap@npm:1.3.3" - dependencies: - call-bind: "npm:^1.0.8" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.5" - es-shim-unscopables: "npm:^1.0.2" - checksum: 10/473534573aa4b37b1d80705d0ce642f5933cccf5617c9f3e8a56686e9815ba93d469138e86a1f25d2fe8af999c3d24f54d703ec1fc2db2e6778d46d0f4ac951e - languageName: node - linkType: hard - -"array.prototype.tosorted@npm:^1.1.4": - version: 1.1.4 - resolution: "array.prototype.tosorted@npm:1.1.4" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.3" - es-errors: "npm:^1.3.0" - es-shim-unscopables: "npm:^1.0.2" - checksum: 10/874694e5d50e138894ff5b853e639c29b0aa42bbd355acda8e8e9cd337f1c80565f21edc15e8c727fa4c0877fd9d8783c575809e440cc4d2d19acaa048bf967d - languageName: node - linkType: hard - "arraybuffer.prototype.slice@npm:^1.0.4": version: 1.0.4 resolution: "arraybuffer.prototype.slice@npm:1.0.4" @@ -18863,13 +17860,6 @@ __metadata: languageName: node linkType: hard -"ast-types-flow@npm:^0.0.8": - version: 0.0.8 - resolution: "ast-types-flow@npm:0.0.8" - checksum: 10/85a1c24af4707871c27cfe456bd2ff7fcbe678f3d1c878ac968c9557735a171a17bdcc8c8f903ceab3fc3c49d5b3da2194e6ab0a6be7fec0e133fa028f21ba1b - languageName: node - linkType: hard - "astral-regex@npm:^2.0.0": version: 2.0.0 resolution: "astral-regex@npm:2.0.0" @@ -18984,13 +17974,6 @@ __metadata: languageName: node linkType: hard -"axe-core@npm:=4.7.0": - version: 4.7.0 - resolution: "axe-core@npm:4.7.0" - checksum: 10/615c0f7722c3c9fcf353dbd70b00e2ceae234d4c17cbc839dd85c01d16797c4e4da45f8d27c6118e9e6b033fb06efd196106e13651a1b2f3a10e0f11c7b2f660 - languageName: node - linkType: hard - "axios-retry@npm:^3.2.4": version: 3.2.4 resolution: "axios-retry@npm:3.2.4" @@ -19061,15 +18044,6 @@ __metadata: languageName: node linkType: hard -"axobject-query@npm:^3.2.1": - version: 3.2.1 - resolution: "axobject-query@npm:3.2.1" - dependencies: - dequal: "npm:^2.0.3" - checksum: 10/675af2548ed4ece75ad6d50cc0473cfdec7579eac77ec9861e7088d03ffb171aa697b70d2877423bee2ce16460ef62c698c6442a105612cc015719e8ea06b0bd - languageName: node - linkType: hard - "babel-jest@npm:^29.7.0": version: 29.7.0 resolution: "babel-jest@npm:29.7.0" @@ -19784,7 +18758,7 @@ __metadata: version: 0.0.0-use.local resolution: "calcom-monorepo@workspace:." dependencies: - "@calcom/eslint-config": "workspace:*" + "@biomejs/biome": "npm:^2.3.8" "@changesets/changelog-github": "npm:0.5.1" "@changesets/cli": "npm:2.29.4" "@faker-js/faker": "npm:9.2.0" @@ -19798,7 +18772,6 @@ __metadata: c8: "npm:7.13.0" checkly: "npm:latest" dotenv-checker: "npm:1.1.5" - eslint: "npm:9.36.0" husky: "npm:9.1.7" i18n-unused: "npm:0.13.0" jest-diff: "npm:29.7.0" @@ -19808,7 +18781,6 @@ __metadata: next-router-mock: "npm:0.9.12" node-gyp: "npm:10.2.0" node-ical: "npm:0.16.1" - prettier: "npm:2.8.7" prismock: "npm:1.35.3" resize-observer-polyfill: "npm:1.5.1" tsc-absolute: "npm:1.0.0" @@ -21708,13 +20680,6 @@ __metadata: languageName: node linkType: hard -"damerau-levenshtein@npm:^1.0.8": - version: 1.0.8 - resolution: "damerau-levenshtein@npm:1.0.8" - checksum: 10/f4eba1c90170f96be25d95fa3857141b5f81e254f7e4d530da929217b19990ea9a0390fc53d3c1cafac9152fda78e722ea4894f765cf6216be413b5af1fbf821 - languageName: node - linkType: hard - "data-uri-to-buffer@npm:^4.0.0": version: 4.0.1 resolution: "data-uri-to-buffer@npm:4.0.1" @@ -21866,7 +20831,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.7, debug@npm:^4.4.0, debug@npm:^4.4.1": +"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.7, debug@npm:^4.4.0": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -21890,15 +20855,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: "npm:^2.1.1" - checksum: 10/d86fd7be2b85462297ea16f1934dc219335e802f629ca9a69b63ed8ed041dda492389bb2ee039217c02e5b54792b1c51aa96ae954cf28634d363a2360c7a1639 - languageName: node - linkType: hard - "debug@npm:~4.3.1, debug@npm:~4.3.2, debug@npm:~4.3.4": version: 4.3.7 resolution: "debug@npm:4.3.7" @@ -21986,13 +20942,6 @@ __metadata: languageName: node linkType: hard -"deep-is@npm:^0.1.3": - version: 0.1.4 - resolution: "deep-is@npm:0.1.4" - checksum: 10/ec12d074aef5ae5e81fa470b9317c313142c9e8e2afe3f8efa124db309720db96d1d222b82b84c834e5f87e7a614b44a4684b6683583118b87c833b3be40d4d8 - languageName: node - linkType: hard - "deepmerge-ts@npm:7.1.5": version: 7.1.5 resolution: "deepmerge-ts@npm:7.1.5" @@ -22313,15 +21262,6 @@ __metadata: languageName: node linkType: hard -"doctrine@npm:^2.1.0": - version: 2.1.0 - resolution: "doctrine@npm:2.1.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10/555684f77e791b17173ea86e2eea45ef26c22219cb64670669c4f4bebd26dbc95cd90ec1f4159e9349a6bb9eb892ce4dde8cd0139e77bedd8bf4518238618474 - languageName: node - linkType: hard - "dom-accessibility-api@npm:^0.5.6, dom-accessibility-api@npm:^0.5.9": version: 0.5.16 resolution: "dom-accessibility-api@npm:0.5.16" @@ -22477,13 +21417,6 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:16.0.3": - version: 16.0.3 - resolution: "dotenv@npm:16.0.3" - checksum: 10/d6788c8e40b35ad9a9ca29249dccf37fa6b3ad26700fcbc87f2f41101bf914f5193a04e36a3d23de70b1dcb8e5d5a3b21e151debace2c4cd08d868be500a1b29 - languageName: node - linkType: hard - "dotenv@npm:16.3.1": version: 16.3.1 resolution: "dotenv@npm:16.3.1" @@ -22804,7 +21737,7 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.10.0, enhanced-resolve@npm:^5.15.0, enhanced-resolve@npm:^5.18.3, enhanced-resolve@npm:^5.7.0": +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.15.0, enhanced-resolve@npm:^5.18.3, enhanced-resolve@npm:^5.7.0": version: 5.18.3 resolution: "enhanced-resolve@npm:5.18.3" dependencies: @@ -22903,7 +21836,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9, es-abstract@npm:^1.24.0": +"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9": version: 1.24.0 resolution: "es-abstract@npm:1.24.0" dependencies: @@ -22979,30 +21912,6 @@ __metadata: languageName: node linkType: hard -"es-iterator-helpers@npm:^1.0.15, es-iterator-helpers@npm:^1.2.1": - version: 1.2.1 - resolution: "es-iterator-helpers@npm:1.2.1" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.6" - es-errors: "npm:^1.3.0" - es-set-tostringtag: "npm:^2.0.3" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.6" - globalthis: "npm:^1.0.4" - gopd: "npm:^1.2.0" - has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - internal-slot: "npm:^1.1.0" - iterator.prototype: "npm:^1.1.4" - safe-array-concat: "npm:^1.1.3" - checksum: 10/802e0e8427a05ff4a5b0c70c7fdaaeff37cdb81a28694aeb7bfb831c6ab340d8f3deeb67b96732ff9e9699ea240524d5ea8a9a6a335fcd15aa3983b27b06113f - languageName: node - linkType: hard - "es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.5.4": version: 1.7.0 resolution: "es-module-lexer@npm:1.7.0" @@ -23019,7 +21928,7 @@ __metadata: languageName: node linkType: hard -"es-set-tostringtag@npm:^2.0.3, es-set-tostringtag@npm:^2.1.0": +"es-set-tostringtag@npm:^2.1.0": version: 2.1.0 resolution: "es-set-tostringtag@npm:2.1.0" dependencies: @@ -23031,15 +21940,6 @@ __metadata: languageName: node linkType: hard -"es-shim-unscopables@npm:^1.0.2, es-shim-unscopables@npm:^1.1.0": - version: 1.1.0 - resolution: "es-shim-unscopables@npm:1.1.0" - dependencies: - hasown: "npm:^2.0.2" - checksum: 10/c351f586c30bbabc62355be49564b2435468b52c3532b8a1663672e3d10dc300197e69c247869dd173e56d86423ab95fc0c10b0939cdae597094e0fdca078cba - languageName: node - linkType: hard - "es-to-primitive@npm:^1.3.0": version: 1.3.0 resolution: "es-to-primitive@npm:1.3.0" @@ -23381,309 +22281,7 @@ __metadata: languageName: node linkType: hard -"eslint-config-next@npm:13.5.11": - version: 13.5.11 - resolution: "eslint-config-next@npm:13.5.11" - dependencies: - "@next/eslint-plugin-next": "npm:13.5.11" - "@rushstack/eslint-patch": "npm:^1.3.3" - "@typescript-eslint/parser": "npm:^5.4.2 || ^6.0.0" - eslint-import-resolver-node: "npm:^0.3.6" - eslint-import-resolver-typescript: "npm:^3.5.2" - eslint-plugin-import: "npm:^2.28.1" - eslint-plugin-jsx-a11y: "npm:^6.7.1" - eslint-plugin-react: "npm:^7.33.2" - eslint-plugin-react-hooks: "npm:^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: ">=3.3.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/6694d86f779f2a6e820873db6641d43cdf446aaa2e9c97b13c0019627369538d217f41e4b7349d7a9308a5378a454c51201e47e8eac2e873fb3f0309985a72d6 - languageName: node - linkType: hard - -"eslint-config-prettier@npm:8.6.0": - version: 8.6.0 - resolution: "eslint-config-prettier@npm:8.6.0" - peerDependencies: - eslint: ">=7.0.0" - bin: - eslint-config-prettier: bin/cli.js - checksum: 10/dcb22c140e47c74ffa6c55297bf107c2ebd9e594c92b33960f6a21defc5b2842f8bc6af9b79acf3e6f23a776ea770ff2ade3dd9797f4cf051f01eff8ff235347 - languageName: node - linkType: hard - -"eslint-config-prettier@npm:9.1.2": - version: 9.1.2 - resolution: "eslint-config-prettier@npm:9.1.2" - peerDependencies: - eslint: ">=7.0.0" - bin: - eslint-config-prettier: bin/cli.js - checksum: 10/e4bba2d76df9dc6e2adca2866e544bfd1ff32232fc483743c04cedd93918a90a327b56d4a7e3f9d3fa32d90bd50b034d09df987860260064b18c026b8bbd15aa - languageName: node - linkType: hard - -"eslint-config-turbo@npm:0.0.7": - version: 0.0.7 - resolution: "eslint-config-turbo@npm:0.0.7" - dependencies: - eslint-plugin-turbo: "npm:0.0.7" - peerDependencies: - eslint: ">6.6.0" - checksum: 10/39ecad05b75df4d4019429edc197a618f0ddf98ce76b3233e350201f180ae5a55e693b8d60060b8a44ebafdb95b6f0f562152962a126fa06e528e8dd8e0e963e - languageName: node - linkType: hard - -"eslint-import-context@npm:^0.1.8": - version: 0.1.9 - resolution: "eslint-import-context@npm:0.1.9" - dependencies: - get-tsconfig: "npm:^4.10.1" - stable-hash-x: "npm:^0.2.0" - peerDependencies: - unrs-resolver: ^1.0.0 - peerDependenciesMeta: - unrs-resolver: - optional: true - checksum: 10/f0778126bb3aae57c8c68946c71c4418927e9d39f72099b799d9c47a3b5712d6c9166b63ee8be58a020961dcc9216df09c856b825336af375ccbbdeedfc82a99 - languageName: node - linkType: hard - -"eslint-import-resolver-node@npm:^0.3.6, eslint-import-resolver-node@npm:^0.3.9": - version: 0.3.9 - resolution: "eslint-import-resolver-node@npm:0.3.9" - dependencies: - debug: "npm:^3.2.7" - is-core-module: "npm:^2.13.0" - resolve: "npm:^1.22.4" - checksum: 10/d52e08e1d96cf630957272e4f2644dcfb531e49dcfd1edd2e07e43369eb2ec7a7d4423d417beee613201206ff2efa4eb9a582b5825ee28802fc7c71fcd53ca83 - languageName: node - linkType: hard - -"eslint-import-resolver-typescript@npm:4.4.4": - version: 4.4.4 - resolution: "eslint-import-resolver-typescript@npm:4.4.4" - dependencies: - debug: "npm:^4.4.1" - eslint-import-context: "npm:^0.1.8" - get-tsconfig: "npm:^4.10.1" - is-bun-module: "npm:^2.0.0" - stable-hash-x: "npm:^0.2.0" - tinyglobby: "npm:^0.2.14" - unrs-resolver: "npm:^1.7.11" - peerDependencies: - eslint: "*" - eslint-plugin-import: "*" - eslint-plugin-import-x: "*" - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true - checksum: 10/4f871f6d1a04c55c2087c5ff1030f783a29abb59901b354d7ef58a0fc687d379dcbd08cf377cddeb7e19f26dd380d32d85ee4760e9410a059639d2b3df7d1ff3 - languageName: node - linkType: hard - -"eslint-import-resolver-typescript@npm:^3.5.2": - version: 3.5.2 - resolution: "eslint-import-resolver-typescript@npm:3.5.2" - dependencies: - debug: "npm:^4.3.4" - enhanced-resolve: "npm:^5.10.0" - get-tsconfig: "npm:^4.2.0" - globby: "npm:^13.1.2" - is-core-module: "npm:^2.10.0" - is-glob: "npm:^4.0.3" - synckit: "npm:^0.8.4" - peerDependencies: - eslint: "*" - eslint-plugin-import: "*" - checksum: 10/d704b1e853c543901e87fc4755c170df22a01eebc81f9e7cdd27201bfb5b62ddfe21d433a85efdb13af02eb5fc87ff966e7178a3627452fafafabe6930de8d05 - languageName: node - linkType: hard - -"eslint-module-utils@npm:^2.12.1": - version: 2.12.1 - resolution: "eslint-module-utils@npm:2.12.1" - dependencies: - debug: "npm:^3.2.7" - peerDependenciesMeta: - eslint: - optional: true - checksum: 10/bd25d6610ec3abaa50e8f1beb0119541562bbb8dd02c035c7e887976fe1e0c5dd8175f4607ca8d86d1146df24d52a071bd3d1dd329f6902bd58df805a8ca16d3 - languageName: node - linkType: hard - -"eslint-plugin-import@npm:2.32.0, eslint-plugin-import@npm:^2.28.1": - version: 2.32.0 - resolution: "eslint-plugin-import@npm:2.32.0" - dependencies: - "@rtsao/scc": "npm:^1.1.0" - array-includes: "npm:^3.1.9" - array.prototype.findlastindex: "npm:^1.2.6" - array.prototype.flat: "npm:^1.3.3" - array.prototype.flatmap: "npm:^1.3.3" - debug: "npm:^3.2.7" - doctrine: "npm:^2.1.0" - eslint-import-resolver-node: "npm:^0.3.9" - eslint-module-utils: "npm:^2.12.1" - hasown: "npm:^2.0.2" - is-core-module: "npm:^2.16.1" - is-glob: "npm:^4.0.3" - minimatch: "npm:^3.1.2" - object.fromentries: "npm:^2.0.8" - object.groupby: "npm:^1.0.3" - object.values: "npm:^1.2.1" - semver: "npm:^6.3.1" - string.prototype.trimend: "npm:^1.0.9" - tsconfig-paths: "npm:^3.15.0" - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - checksum: 10/1bacf4967e9ebf99e12176a795f0d6d3a87d1c9a030c2207f27b267e10d96a1220be2647504c7fc13ab543cdf13ffef4b8f5620e0447032dba4ff0d3922f7c9e - languageName: node - linkType: hard - -"eslint-plugin-jsx-a11y@npm:^6.7.1": - version: 6.8.0 - resolution: "eslint-plugin-jsx-a11y@npm:6.8.0" - dependencies: - "@babel/runtime": "npm:^7.23.2" - aria-query: "npm:^5.3.0" - array-includes: "npm:^3.1.7" - array.prototype.flatmap: "npm:^1.3.2" - ast-types-flow: "npm:^0.0.8" - axe-core: "npm:=4.7.0" - axobject-query: "npm:^3.2.1" - damerau-levenshtein: "npm:^1.0.8" - emoji-regex: "npm:^9.2.2" - es-iterator-helpers: "npm:^1.0.15" - hasown: "npm:^2.0.0" - jsx-ast-utils: "npm:^3.3.5" - language-tags: "npm:^1.0.9" - minimatch: "npm:^3.1.2" - object.entries: "npm:^1.1.7" - object.fromentries: "npm:^2.0.7" - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 10/7a8e4498531a43d988ce2f12502a3f5ce96eacfec13f956cf927f24bb041b724fb7fc0f0306ea19d143bfc79e138bf25e25acca0822847206ac6bf5ce095e846 - languageName: node - linkType: hard - -"eslint-plugin-only-warn@npm:1.1.0": - version: 1.1.0 - resolution: "eslint-plugin-only-warn@npm:1.1.0" - checksum: 10/395e0502d8fc901704094da4752a11bc1b2d057d323828d557b6b3ca20125cf4b9177b516e67b212f7251de65d831d73c2d57162d4f614cdf36402c0bf8262b4 - languageName: node - linkType: hard - -"eslint-plugin-playwright@npm:0.12.0": - version: 0.12.0 - resolution: "eslint-plugin-playwright@npm:0.12.0" - peerDependencies: - eslint: ">=7" - eslint-plugin-jest: ">=24" - peerDependenciesMeta: - eslint-plugin-jest: - optional: true - checksum: 10/ad5c70487aa0396c757108e54119adae228b59f5fb2c9b40baf9b54d11c77f23e6851ce762e6e35106de261f12c733ebb3a787d7f9dc1e2aad6b702141942f39 - languageName: node - linkType: hard - -"eslint-plugin-prettier@npm:4.2.1": - version: 4.2.1 - resolution: "eslint-plugin-prettier@npm:4.2.1" - dependencies: - prettier-linter-helpers: "npm:^1.0.0" - peerDependencies: - eslint: ">=7.28.0" - prettier: ">=2.0.0" - peerDependenciesMeta: - eslint-config-prettier: - optional: true - checksum: 10/d387f85dd1bfcb6bc6b794845fee6afb9ebb2375653de6bcde6e615892fb97f85121a7c012a4651b181fc09953bdf54c9bc70cab7ad297019d89ae87dd007e28 - languageName: node - linkType: hard - -"eslint-plugin-react-hooks@npm:4.6.0": - version: 4.6.0 - resolution: "eslint-plugin-react-hooks@npm:4.6.0" - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 10/3c63134e056a6d98d66e2c475c81f904169db817e89316d14e36269919e31f4876a2588aa0e466ec8ef160465169c627fe823bfdaae7e213946584e4a165a3ac - languageName: node - linkType: hard - -"eslint-plugin-react-hooks@npm:5.2.0": - version: 5.2.0 - resolution: "eslint-plugin-react-hooks@npm:5.2.0" - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - checksum: 10/ebb79e9cf69ae06e3a7876536653c5e556b5fd8cd9dc49577f10a6e728360e7b6f5ce91f4339b33e93b26e3bb23805418f8b5e75db80baddd617b1dffe73bed1 - languageName: node - linkType: hard - -"eslint-plugin-react-hooks@npm:^4.5.0 || 5.0.0-canary-7118f5dd7-20230705": - version: 5.0.0-canary-7118f5dd7-20230705 - resolution: "eslint-plugin-react-hooks@npm:5.0.0-canary-7118f5dd7-20230705" - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 10/0e0e80c21552998b7af2b92a74aec5e862b33f6f16c3e1303d42b5821d68b7ba11c2037bd73e3581fc7d97d9a2e64dd19e202d47d6885f53e33aac87c048d641 - languageName: node - linkType: hard - -"eslint-plugin-react@npm:7.37.5, eslint-plugin-react@npm:^7.33.2": - version: 7.37.5 - resolution: "eslint-plugin-react@npm:7.37.5" - dependencies: - array-includes: "npm:^3.1.8" - array.prototype.findlast: "npm:^1.2.5" - array.prototype.flatmap: "npm:^1.3.3" - array.prototype.tosorted: "npm:^1.1.4" - doctrine: "npm:^2.1.0" - es-iterator-helpers: "npm:^1.2.1" - estraverse: "npm:^5.3.0" - hasown: "npm:^2.0.2" - jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" - minimatch: "npm:^3.1.2" - object.entries: "npm:^1.1.9" - object.fromentries: "npm:^2.0.8" - object.values: "npm:^1.2.1" - prop-types: "npm:^15.8.1" - resolve: "npm:^2.0.0-next.5" - semver: "npm:^6.3.1" - string.prototype.matchall: "npm:^4.0.12" - string.prototype.repeat: "npm:^1.0.0" - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - checksum: 10/ee1bd4e0ec64f29109d5a625bb703d179c82e0159c86c3f1b52fc1209d2994625a137dae303c333fb308a2e38315e44066d5204998177e31974382f9fda25d5c - languageName: node - linkType: hard - -"eslint-plugin-turbo@npm:0.0.7": - version: 0.0.7 - resolution: "eslint-plugin-turbo@npm:0.0.7" - peerDependencies: - eslint: ">6.6.0" - checksum: 10/09c96989de8d98286c751d3f7cd39c335f88a72e5e6a11f61fdf69d38d6a77da8fac4bfec3d41a7da890869dbc5a5a5001df121d5f3c552b3ed220fa18f59c83 - languageName: node - linkType: hard - -"eslint-plugin-turbo@npm:2.5.5": - version: 2.5.5 - resolution: "eslint-plugin-turbo@npm:2.5.5" - dependencies: - dotenv: "npm:16.0.3" - peerDependencies: - eslint: ">6.6.0" - turbo: ">2.0.0" - checksum: 10/98f05b94a0417bf0c17c50bc1642c441f58d1ebabf4410f832ac2771a0a4ff06216037a63fb3d528b0cff3fac98f8a85b0a06d229ea15a838630706f36b2b21e - languageName: node - linkType: hard - -"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": +"eslint-scope@npm:5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" dependencies: @@ -23693,98 +22291,13 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^8.4.0": - version: 8.4.0 - resolution: "eslint-scope@npm:8.4.0" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^5.2.0" - checksum: 10/e8e611701f65375e034c62123946e628894f0b54aa8cb11abe224816389abe5cd74cf16b62b72baa36504f22d1a958b9b8b0169b82397fe2e7997674c0d09b06 - languageName: node - linkType: hard - -"eslint-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "eslint-utils@npm:3.0.0" - dependencies: - eslint-visitor-keys: "npm:^2.0.0" - peerDependencies: - eslint: ">=5" - checksum: 10/7675260a6b220c70f13e4cdbf077e93cad0dfb388429a27d6c0b584b2b20dca24594508e8bdb00a460a5764bd364a5018e20c2b8b1d70f82bcc3fdc30692a4d2 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^2.0.0": - version: 2.1.0 - resolution: "eslint-visitor-keys@npm:2.1.0" - checksum: 10/db4547eef5039122d518fa307e938ceb8589da5f6e8f5222efaf14dd62f748ce82e2d2becd3ff9412a50350b726bda95dbea8515a471074547daefa58aee8735 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.4.1": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10/3f357c554a9ea794b094a09bd4187e5eacd1bc0d0653c3adeb87962c548e6a1ab8f982b86963ae1337f5d976004146536dcee5d0e2806665b193fbfbf1a9231b languageName: node linkType: hard -"eslint-visitor-keys@npm:^4.2.1": - version: 4.2.1 - resolution: "eslint-visitor-keys@npm:4.2.1" - checksum: 10/3ee00fc6a7002d4b0ffd9dc99e13a6a7882c557329e6c25ab254220d71e5c9c4f89dca4695352949ea678eb1f3ba912a18ef8aac0a7fe094196fd92f441bfce2 - languageName: node - linkType: hard - -"eslint@npm:9.36.0": - version: 9.36.0 - resolution: "eslint@npm:9.36.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.8.0" - "@eslint-community/regexpp": "npm:^4.12.1" - "@eslint/config-array": "npm:^0.21.0" - "@eslint/config-helpers": "npm:^0.3.1" - "@eslint/core": "npm:^0.15.2" - "@eslint/eslintrc": "npm:^3.3.1" - "@eslint/js": "npm:9.36.0" - "@eslint/plugin-kit": "npm:^0.3.5" - "@humanfs/node": "npm:^0.16.6" - "@humanwhocodes/module-importer": "npm:^1.0.1" - "@humanwhocodes/retry": "npm:^0.4.2" - "@types/estree": "npm:^1.0.6" - "@types/json-schema": "npm:^7.0.15" - ajv: "npm:^6.12.4" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.6" - debug: "npm:^4.3.2" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^8.4.0" - eslint-visitor-keys: "npm:^4.2.1" - espree: "npm:^10.4.0" - esquery: "npm:^1.5.0" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^8.0.0" - find-up: "npm:^5.0.0" - glob-parent: "npm:^6.0.2" - ignore: "npm:^5.2.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.3" - peerDependencies: - jiti: "*" - peerDependenciesMeta: - jiti: - optional: true - bin: - eslint: bin/eslint.js - checksum: 10/6e512a82e680e6cdc554e97c7e232b83171f24a52fb46f89c2df74bcb80fe59b6e0a989485c9fe7e9ca81556b1953dd8604ace4ed37f651eded9a37816c06b7c - languageName: node - linkType: hard - "esm@npm:^3.2.25": version: 3.2.25 resolution: "esm@npm:3.2.25" @@ -23792,17 +22305,6 @@ __metadata: languageName: node linkType: hard -"espree@npm:^10.0.1, espree@npm:^10.4.0": - version: 10.4.0 - resolution: "espree@npm:10.4.0" - dependencies: - acorn: "npm:^8.15.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^4.2.1" - checksum: 10/9b355b32dbd1cc9f57121d5ee3be258fab87ebeb7c83fc6c02e5af1a74fc8c5ba79fe8c663e69ea112c3e84a1b95e6a2067ac4443ee7813bb85ac7581acb8bf9 - languageName: node - linkType: hard - "esprima@npm:^4.0.0, esprima@npm:^4.0.1, esprima@npm:~4.0.0": version: 4.0.1 resolution: "esprima@npm:4.0.1" @@ -23813,15 +22315,6 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.5.0": - version: 1.6.0 - resolution: "esquery@npm:1.6.0" - dependencies: - estraverse: "npm:^5.1.0" - checksum: 10/c587fb8ec9ed83f2b1bc97cf2f6854cc30bf784a79d62ba08c6e358bf22280d69aee12827521cf38e69ae9761d23fb7fde593ce315610f85655c139d99b05e5a - languageName: node - linkType: hard - "esrecurse@npm:^4.3.0": version: 4.3.0 resolution: "esrecurse@npm:4.3.0" @@ -23838,7 +22331,7 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": +"estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" checksum: 10/37cbe6e9a68014d34dbdc039f90d0baf72436809d02edffcc06ba3c2a12eb298048f877511353b130153e532aac8d68ba78430c0dd2f44806ebc7c014b01585e @@ -24242,13 +22735,6 @@ __metadata: languageName: node linkType: hard -"fast-diff@npm:^1.1.2": - version: 1.2.0 - resolution: "fast-diff@npm:1.2.0" - checksum: 10/f62419b3d770f201d51c3ee8c4443b752b3ba2d548a6639026b7e09a08203ed2699a8d1fe21efcb8c5186135002d5d2916c12a687cac63785626456a92915adc - languageName: node - linkType: hard - "fast-equals@npm:^2.0.3": version: 2.0.4 resolution: "fast-equals@npm:2.0.4" @@ -24256,20 +22742,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:3.3.1": - version: 3.3.1 - resolution: "fast-glob@npm:3.3.1" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 10/51bcd15472879dfe51d4b01c5b70bbc7652724d39cdd082ba11276dbd7d84db0f6b33757e1938af8b2768a4bf485d9be0c89153beae24ee8331d6dcc7550379f - languageName: node - linkType: hard - -"fast-glob@npm:3.3.2, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.2": +"fast-glob@npm:3.3.2, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -24289,13 +22762,6 @@ __metadata: languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 10/eb7e220ecf2bab5159d157350b81d01f75726a4382f5a9266f42b9150c4523b9795f7f5d9fbbbeaeac09a441b2369f05ee02db48ea938584205530fe5693cfe1 - languageName: node - linkType: hard - "fast-levenshtein@npm:^3.0.0": version: 3.0.0 resolution: "fast-levenshtein@npm:3.0.0" @@ -24587,15 +23053,6 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^8.0.0": - version: 8.0.0 - resolution: "file-entry-cache@npm:8.0.0" - dependencies: - flat-cache: "npm:^4.0.0" - checksum: 10/afe55c4de4e0d226a23c1eae62a7219aafb390859122608a89fa4df6addf55c7fd3f1a2da6f5b41e7cdff496e4cf28bbd215d53eab5c817afa96d2b40c81bfb0 - languageName: node - linkType: hard - "file-system-cache@npm:2.3.0": version: 2.3.0 resolution: "file-system-cache@npm:2.3.0" @@ -24741,16 +23198,6 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^4.0.0": - version: 4.0.1 - resolution: "flat-cache@npm:4.0.1" - dependencies: - flatted: "npm:^3.2.9" - keyv: "npm:^4.5.4" - checksum: 10/58ce851d9045fffc7871ce2bd718bc485ad7e777bf748c054904b87c351ff1080c2c11da00788d78738bfb51b71e4d5ea12d13b98eb36e3358851ffe495b62dc - languageName: node - linkType: hard - "flat@npm:6.0.1": version: 6.0.1 resolution: "flat@npm:6.0.1" @@ -24760,7 +23207,7 @@ __metadata: languageName: node linkType: hard -"flatted@npm:^3.2.9, flatted@npm:^3.3.1": +"flatted@npm:^3.3.1": version: 3.3.3 resolution: "flatted@npm:3.3.3" checksum: 10/8c96c02fbeadcf4e8ffd0fa24983241e27698b0781295622591fc13585e2f226609d95e422bcf2ef044146ffacb6b68b1f20871454eddf75ab3caa6ee5f4a1fe @@ -25317,7 +23764,7 @@ __metadata: languageName: node linkType: hard -"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": +"get-proto@npm:^1.0.1": version: 1.0.1 resolution: "get-proto@npm:1.0.1" dependencies: @@ -25362,15 +23809,6 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.10.1, get-tsconfig@npm:^4.2.0": - version: 4.10.1 - resolution: "get-tsconfig@npm:4.10.1" - dependencies: - resolve-pkg-maps: "npm:^1.0.0" - checksum: 10/04d63f47fdecaefbd1f73ec02949be4ec4db7d6d9fbc8d4e81f9a4bb1c6f876e48943712f2f9236643d3e4d61d9a7b06da08564d08b034631ebe3f5605bef237 - languageName: node - linkType: hard - "get-user-locale@npm:^1.2.0": version: 1.4.0 resolution: "get-user-locale@npm:1.4.0" @@ -25557,20 +23995,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:7.1.7": - version: 7.1.7 - resolution: "glob@npm:7.1.7" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.0.4" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 10/ff5aab0386e9cace92b0550d42085b71013c5ea382982dd7fdded998a559635f61413b8ba6fb7294eef289c83b52f4e64136f888300ac8afc4f3e5623182d6c8 - languageName: node - linkType: hard - "glob@npm:^7.0.0, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": version: 7.2.3 resolution: "glob@npm:7.2.3" @@ -25620,27 +24044,6 @@ __metadata: languageName: node linkType: hard -"globals@npm:15.15.0": - version: 15.15.0 - resolution: "globals@npm:15.15.0" - checksum: 10/7f561c87b2fd381b27fc2db7df8a4ea7a9bb378667b8a7193e61fd2ca3a876479174e2a303a74345fbea6e1242e16db48915c1fd3bf35adcf4060a795b425e18 - languageName: node - linkType: hard - -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 10/9f054fa38ff8de8fa356502eb9d2dae0c928217b8b5c8de1f09f5c9b6c8a96d8b9bd3afc49acbcd384a98a81fea713c859e1b09e214c60509517bb8fc2bc13c2 - languageName: node - linkType: hard - -"globals@npm:^14.0.0": - version: 14.0.0 - resolution: "globals@npm:14.0.0" - checksum: 10/03939c8af95c6df5014b137cac83aa909090c3a3985caef06ee9a5a669790877af8698ab38007e4c0186873adc14c0b13764acc754b16a754c216cc56aa5f021 - languageName: node - linkType: hard - "globalthis@npm:^1.0.4": version: 1.0.4 resolution: "globalthis@npm:1.0.4" @@ -25651,13 +24054,6 @@ __metadata: languageName: node linkType: hard -"globalyzer@npm:0.1.0": - version: 0.1.0 - resolution: "globalyzer@npm:0.1.0" - checksum: 10/419a0f95ba542534fac0842964d31b3dc2936a479b2b1a8a62bad7e8b61054faa9b0a06ad9f2e12593396b9b2621cac93358d9b3071d33723fb1778608d358a1 - languageName: node - linkType: hard - "globby@npm:^11.0.0, globby@npm:^11.0.3, globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" @@ -25672,26 +24068,6 @@ __metadata: languageName: node linkType: hard -"globby@npm:^13.1.2": - version: 13.1.3 - resolution: "globby@npm:13.1.3" - dependencies: - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.11" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^4.0.0" - checksum: 10/c5eee00704455c283b3e466b63d906bcd32a64bbe2d00792016cf518cc1a247433ba8cae4ebe6076075a4b14d6fd07f8a9587083d59bfa85e3c4fab9fffa4d91 - languageName: node - linkType: hard - -"globrex@npm:^0.1.2": - version: 0.1.2 - resolution: "globrex@npm:0.1.2" - checksum: 10/81ce62ee6f800d823d6b7da7687f841676d60ee8f51f934ddd862e4057316d26665c4edc0358d4340a923ac00a514f8b67c787e28fe693aae16350f4e60d55e9 - languageName: node - linkType: hard - "google-auth-library@npm:9.15.0, google-auth-library@npm:^9.0.0": version: 9.15.0 resolution: "google-auth-library@npm:9.15.0" @@ -25816,20 +24192,6 @@ __metadata: languageName: node linkType: hard -"grapheme-splitter@npm:^1.0.4": - version: 1.0.4 - resolution: "grapheme-splitter@npm:1.0.4" - checksum: 10/fdb2f51fd430ce881e18e44c4934ad30e59736e46213f7ad35ea5970a9ebdf7d0fe56150d15cc98230d55d2fd48c73dc6781494c38d8cf2405718366c36adb88 - languageName: node - linkType: hard - -"graphemer@npm:^1.4.0": - version: 1.4.0 - resolution: "graphemer@npm:1.4.0" - checksum: 10/6dd60dba97007b21e3a829fab3f771803cc1292977fe610e240ea72afd67e5690ac9eeaafc4a99710e78962e5936ab5a460787c2a1180f1cb0ccfac37d29f897 - languageName: node - linkType: hard - "graphql-config@npm:5.1.3, graphql-config@npm:^5.1.1": version: 5.1.3 resolution: "graphql-config@npm:5.1.3" @@ -26082,7 +24444,7 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.0, hasown@npm:^2.0.2": +"hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" dependencies: @@ -26599,20 +24961,13 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0, ignore@npm:^5.2.4": +"ignore@npm:^5.2.0": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10/cceb6a457000f8f6a50e1196429750d782afce5680dd878aa4221bd79972d68b3a55b4b1458fc682be978f4d3c6a249046aa0880637367216444ab7b014cfc98 languageName: node linkType: hard -"ignore@npm:^7.0.0": - version: 7.0.5 - resolution: "ignore@npm:7.0.5" - checksum: 10/f134b96a4de0af419196f52c529d5c6120c4456ff8a6b5a14ceaaa399f883e15d58d2ce651c9b69b9388491d4669dda47285d307e827de9304a53a1824801bc6 - languageName: node - linkType: hard - "image-q@npm:^4.0.0": version: 4.0.0 resolution: "image-q@npm:4.0.0" @@ -26643,7 +24998,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": +"import-fresh@npm:^3.1.0, import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -27200,15 +25555,6 @@ __metadata: languageName: node linkType: hard -"is-bun-module@npm:^2.0.0": - version: 2.0.0 - resolution: "is-bun-module@npm:2.0.0" - dependencies: - semver: "npm:^7.7.1" - checksum: 10/cded5a1a58368b847872d08617975d620ad94426d76a932f3e08d55b4574d199e0a62a4fb024fa2dc444200b71719eb0bffc5d3d1e1cc82e29b293bb8d66a990 - languageName: node - linkType: hard - "is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" @@ -27238,7 +25584,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.1.0, is-core-module@npm:^2.10.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.1, is-core-module@npm:^2.5.0": +"is-core-module@npm:^2.1.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.16.1, is-core-module@npm:^2.5.0": version: 2.16.1 resolution: "is-core-module@npm:2.16.1" dependencies: @@ -27362,7 +25708,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:4.0.3, is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": +"is-glob@npm:4.0.3, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -27916,20 +26262,6 @@ __metadata: languageName: node linkType: hard -"iterator.prototype@npm:^1.1.4": - version: 1.1.5 - resolution: "iterator.prototype@npm:1.1.5" - dependencies: - define-data-property: "npm:^1.1.4" - es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.6" - get-proto: "npm:^1.0.0" - has-symbols: "npm:^1.1.0" - set-function-name: "npm:^2.0.2" - checksum: 10/352bcf333f42189e65cc8cb2dcb94a5c47cf0a9110ce12aba788d405a980b5f5f3a06c79bf915377e1d480647169babd842ded0d898bed181bf6686e8e6823f6 - languageName: node - linkType: hard - "jackspeak@npm:^2.0.3, jackspeak@npm:^2.3.5": version: 2.3.6 resolution: "jackspeak@npm:2.3.6" @@ -27979,13 +26311,6 @@ __metadata: languageName: node linkType: hard -"javascript-natural-sort@npm:0.7.1": - version: 0.7.1 - resolution: "javascript-natural-sort@npm:0.7.1" - checksum: 10/7bf6eab67871865d347f09a95aa770f9206c1ab0226bcda6fdd9edec340bf41111a7f82abac30556aa16a21cfa3b2b1ca4a362c8b73dd5ce15220e5d31f49d79 - languageName: node - linkType: hard - "jest-changed-files@npm:^29.7.0": version: 29.7.0 resolution: "jest-changed-files@npm:29.7.0" @@ -28699,15 +27024,6 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 10/d2096abdcdec56969764b40ffc91d4a23408aa2f351b4d1c13f736f25476643238c43fdbaf38a191c26b1b78fd856d965f5d4d0dde7b89459cd94025190cdf13 - languageName: node - linkType: hard - "jsesc@npm:^3.0.2": version: 3.1.0 resolution: "jsesc@npm:3.1.0" @@ -28726,13 +27042,6 @@ __metadata: languageName: node linkType: hard -"json-buffer@npm:3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 10/82876154521b7b68ba71c4f969b91572d1beabadd87bd3a6b236f85fbc7dc4695089191ed60bb59f9340993c51b33d479f45b6ba9f3548beb519705281c32c3c - languageName: node - linkType: hard - "json-logic-js@npm:2.0.2": version: 2.0.2 resolution: "json-logic-js@npm:2.0.2" @@ -28782,13 +27091,6 @@ __metadata: languageName: node linkType: hard -"json-stable-stringify-without-jsonify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: 10/12786c2e2f22c27439e6db0532ba321f1d0617c27ad8cb1c352a0e9249a50182fd1ba8b52a18899291604b0c32eafa8afd09e51203f19109a0537f68db2b652d - languageName: node - linkType: hard - "json-to-pretty-yaml@npm:^1.2.2": version: 1.2.2 resolution: "json-to-pretty-yaml@npm:1.2.2" @@ -28808,17 +27110,6 @@ __metadata: languageName: node linkType: hard -"json5@npm:^1.0.2": - version: 1.0.2 - resolution: "json5@npm:1.0.2" - dependencies: - minimist: "npm:^1.2.0" - bin: - json5: lib/cli.js - checksum: 10/a78d812dbbd5642c4f637dd130954acfd231b074965871c3e28a5bbd571f099d623ecf9161f1960c4ddf68e0cc98dee8bebfdb94a71ad4551f85a1afc94b63f6 - languageName: node - linkType: hard - "jsonc-parser@npm:3.2.0": version: 3.2.0 resolution: "jsonc-parser@npm:3.2.0" @@ -28923,18 +27214,6 @@ __metadata: languageName: node linkType: hard -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": - version: 3.3.5 - resolution: "jsx-ast-utils@npm:3.3.5" - dependencies: - array-includes: "npm:^3.1.6" - array.prototype.flat: "npm:^1.3.1" - object.assign: "npm:^4.1.4" - object.values: "npm:^1.1.6" - checksum: 10/b61d44613687dfe4cc8ad4b4fbf3711bf26c60b8d5ed1f494d723e0808415c59b24a7c0ed8ab10736a40ff84eef38cbbfb68b395e05d31117b44ffc59d31edfc - languageName: node - linkType: hard - "jwa@npm:^1.4.1": version: 1.4.1 resolution: "jwa@npm:1.4.1" @@ -29018,15 +27297,6 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.5.4": - version: 4.5.4 - resolution: "keyv@npm:4.5.4" - dependencies: - json-buffer: "npm:3.0.1" - checksum: 10/167eb6ef64cc84b6fa0780ee50c9de456b422a1e18802209234f7c2cf7eae648c7741f32e50d7e24ccb22b24c13154070b01563d642755b156c357431a191e75 - languageName: node - linkType: hard - "kind-of@npm:^6.0.0, kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -29062,22 +27332,6 @@ __metadata: languageName: node linkType: hard -"language-subtag-registry@npm:^0.3.20": - version: 0.3.22 - resolution: "language-subtag-registry@npm:0.3.22" - checksum: 10/5591f4abd775d1ab5945355a5ba894327d2d94c900607bdb69aac1bc5bb921dbeeeb5f616df95e8c0ae875501d19c1cfa0e852ece822121e95048deb34f2b4d2 - languageName: node - linkType: hard - -"language-tags@npm:^1.0.9": - version: 1.0.9 - resolution: "language-tags@npm:1.0.9" - dependencies: - language-subtag-registry: "npm:^0.3.20" - checksum: 10/d3a7c14b694e67f519153d6df6cb200681648d38d623c3bfa9d6a66a5ec5493628acb88e9df5aceef3cf1902ab263a205e7d59ee4cf1d6bb67e707b83538bd6d - languageName: node - linkType: hard - "lazy-universal-dotenv@npm:^4.0.0": version: 4.0.0 resolution: "lazy-universal-dotenv@npm:4.0.0" @@ -29103,16 +27357,6 @@ __metadata: languageName: node linkType: hard -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" - dependencies: - prelude-ls: "npm:^1.2.1" - type-check: "npm:~0.4.0" - checksum: 10/2e4720ff79f21ae08d42374b0a5c2f664c5be8b6c8f565bb4e1315c96ed3a8acaa9de788ffed82d7f2378cf36958573de07ef92336cb5255ed74d08b8318c9ee - languageName: node - linkType: hard - "lexical@npm:0.9.0": version: 0.9.0 resolution: "lexical@npm:0.9.0" @@ -31265,15 +29509,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/c81b47d28153e77521877649f4bab48348d10938df9e8147a58111fe00ef89559a2938de9f6632910c4f7bf7bb5cd81191a546167e58d357f0cfb1e18cecc1c5 - languageName: node - linkType: hard - "minimatch@npm:^10.0.1, minimatch@npm:^10.1.1": version: 10.1.1 resolution: "minimatch@npm:10.1.1" @@ -31922,15 +30157,6 @@ __metadata: languageName: node linkType: hard -"napi-postinstall@npm:^0.3.0": - version: 0.3.3 - resolution: "napi-postinstall@npm:0.3.3" - bin: - napi-postinstall: lib/cli.js - checksum: 10/8e3d1ab7bb324491eb20b7548e05033139e6c48c9cf2d8cd3ae0c17c43716751a8cda0a2e740bb09c822dfc1a0dca207e34c107067b4f66842e30c60c599c901 - languageName: node - linkType: hard - "native-duplexpair@npm:^1.0.0": version: 1.0.0 resolution: "native-duplexpair@npm:1.0.0" @@ -31938,13 +30164,6 @@ __metadata: languageName: node linkType: hard -"natural-compare-lite@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare-lite@npm:1.4.0" - checksum: 10/5222ac3986a2b78dd6069ac62cbb52a7bf8ffc90d972ab76dfe7b01892485d229530ed20d0c62e79a6b363a663b273db3bde195a1358ce9e5f779d4453887225 - languageName: node - linkType: hard - "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -32862,53 +31081,6 @@ __metadata: languageName: node linkType: hard -"object.entries@npm:^1.1.7, object.entries@npm:^1.1.9": - version: 1.1.9 - resolution: "object.entries@npm:1.1.9" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.4" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.1.1" - checksum: 10/24163ab1e1e013796693fc5f5d349e8b3ac0b6a34a7edb6c17d3dd45c6a8854145780c57d302a82512c1582f63720f4b4779d6c1cfba12cbb1420b978802d8a3 - languageName: node - linkType: hard - -"object.fromentries@npm:^2.0.7, object.fromentries@npm:^2.0.8": - version: 2.0.8 - resolution: "object.fromentries@npm:2.0.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-object-atoms: "npm:^1.0.0" - checksum: 10/5b2e80f7af1778b885e3d06aeb335dcc86965e39464671adb7167ab06ac3b0f5dd2e637a90d8ebd7426d69c6f135a4753ba3dd7d0fe2a7030cf718dcb910fd92 - languageName: node - linkType: hard - -"object.groupby@npm:^1.0.3": - version: 1.0.3 - resolution: "object.groupby@npm:1.0.3" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - checksum: 10/44cb86dd2c660434be65f7585c54b62f0425b0c96b5c948d2756be253ef06737da7e68d7106e35506ce4a44d16aa85a413d11c5034eb7ce5579ec28752eb42d0 - languageName: node - linkType: hard - -"object.values@npm:^1.1.6, object.values@npm:^1.2.1": - version: 1.2.1 - resolution: "object.values@npm:1.2.1" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10/f5ec9eccdefeaaa834b089c525663436812a65ff13de7964a1c3a9110f32054f2d58aa476a645bb14f75a79f3fe1154fb3e7bfdae7ac1e80affe171b2ef74bce - languageName: node - linkType: hard - "obliterator@npm:^1.6.1": version: 1.6.1 resolution: "obliterator@npm:1.6.1" @@ -33060,7 +31232,7 @@ __metadata: languageName: node linkType: hard -"open@npm:8.4.0, open@npm:^8.4.0": +"open@npm:8.4.0": version: 8.4.0 resolution: "open@npm:8.4.0" dependencies: @@ -33102,20 +31274,6 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.9.3": - version: 0.9.4 - resolution: "optionator@npm:0.9.4" - dependencies: - deep-is: "npm:^0.1.3" - fast-levenshtein: "npm:^2.0.6" - levn: "npm:^0.4.1" - prelude-ls: "npm:^1.2.1" - type-check: "npm:^0.4.0" - word-wrap: "npm:^1.2.5" - checksum: 10/a8398559c60aef88d7f353a4f98dcdff6090a4e70f874c827302bf1213d9106a1c4d5fcb68dacb1feb3c30a04c4102f41047aa55d4c576b863d6fc876e001af6 - languageName: node - linkType: hard - "options-defaults@npm:^2.0.39": version: 2.0.40 resolution: "options-defaults@npm:2.0.40" @@ -34805,86 +32963,6 @@ __metadata: languageName: node linkType: hard -"prelude-ls@npm:^1.2.1": - version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1" - checksum: 10/0b9d2c76801ca652a7f64892dd37b7e3fab149a37d2424920099bf894acccc62abb4424af2155ab36dea8744843060a2d8ddc983518d0b1e22265a22324b72ed - languageName: node - linkType: hard - -"prettier-linter-helpers@npm:^1.0.0": - version: 1.0.0 - resolution: "prettier-linter-helpers@npm:1.0.0" - dependencies: - fast-diff: "npm:^1.1.2" - checksum: 10/00ce8011cf6430158d27f9c92cfea0a7699405633f7f1d4a45f07e21bf78e99895911cbcdc3853db3a824201a7c745bd49bfea8abd5fb9883e765a90f74f8392 - languageName: node - linkType: hard - -"prettier-plugin-tailwindcss@npm:0.2.5": - version: 0.2.5 - resolution: "prettier-plugin-tailwindcss@npm:0.2.5" - peerDependencies: - "@ianvs/prettier-plugin-sort-imports": "*" - "@prettier/plugin-php": "*" - "@prettier/plugin-pug": "*" - "@shopify/prettier-plugin-liquid": "*" - "@shufo/prettier-plugin-blade": "*" - "@trivago/prettier-plugin-sort-imports": "*" - prettier: ">=2.2.0" - prettier-plugin-astro: "*" - prettier-plugin-css-order: "*" - prettier-plugin-import-sort: "*" - prettier-plugin-jsdoc: "*" - prettier-plugin-organize-attributes: "*" - prettier-plugin-organize-imports: "*" - prettier-plugin-style-order: "*" - prettier-plugin-svelte: "*" - prettier-plugin-twig-melody: "*" - peerDependenciesMeta: - "@ianvs/prettier-plugin-sort-imports": - optional: true - "@prettier/plugin-php": - optional: true - "@prettier/plugin-pug": - optional: true - "@shopify/prettier-plugin-liquid": - optional: true - "@shufo/prettier-plugin-blade": - optional: true - "@trivago/prettier-plugin-sort-imports": - optional: true - prettier-plugin-astro: - optional: true - prettier-plugin-css-order: - optional: true - prettier-plugin-import-sort: - optional: true - prettier-plugin-jsdoc: - optional: true - prettier-plugin-organize-attributes: - optional: true - prettier-plugin-organize-imports: - optional: true - prettier-plugin-style-order: - optional: true - prettier-plugin-svelte: - optional: true - prettier-plugin-twig-melody: - optional: true - checksum: 10/1d941218568968b6c9ec522e293500cbe66b2130ea5429d4788d5e49cd1769fc57f62a89cd572546d673b6b78f5e4908c4ace4f7a652794bca47ca67de4755d8 - languageName: node - linkType: hard - -"prettier@npm:2.8.7, prettier@npm:^2.7.1": - version: 2.8.7 - resolution: "prettier@npm:2.8.7" - bin: - prettier: bin-prettier.js - checksum: 10/5d5acc2015dcd9ae4033c0ea3189820920149137100750c897d384bc9058c79c78af94ca892f3bc7c5b6da0661a50357e8eb9eb455c4c1da156b1d0757f54a8a - languageName: node - linkType: hard - "prettier@npm:3.6.2": version: 3.6.2 resolution: "prettier@npm:3.6.2" @@ -34894,6 +32972,15 @@ __metadata: languageName: node linkType: hard +"prettier@npm:^2.7.1": + version: 2.8.7 + resolution: "prettier@npm:2.8.7" + bin: + prettier: bin-prettier.js + checksum: 10/5d5acc2015dcd9ae4033c0ea3189820920149137100750c897d384bc9058c79c78af94ca892f3bc7c5b6da0661a50357e8eb9eb455c4c1da156b1d0757f54a8a + languageName: node + linkType: hard + "pretty-format@npm:^27.0.2": version: 27.5.1 resolution: "pretty-format@npm:27.5.1" @@ -36247,7 +34334,7 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.3, regexp.prototype.flags@npm:^1.5.4": +"regexp.prototype.flags@npm:^1.5.4": version: 1.5.4 resolution: "regexp.prototype.flags@npm:1.5.4" dependencies: @@ -36261,13 +34348,6 @@ __metadata: languageName: node linkType: hard -"regexpp@npm:^3.2.0": - version: 3.2.0 - resolution: "regexpp@npm:3.2.0" - checksum: 10/3310010895a906873262f4b494fc99bcef1e71ef6720a0532c5999ca586498cbd4a284c8e3c2423f9d1d37512fd08d6064b7564e0e59508cf938f76dd15ace84 - languageName: node - linkType: hard - "rehype-stringify@npm:10.0.1": version: 10.0.1 resolution: "rehype-stringify@npm:10.0.1" @@ -36503,13 +34583,6 @@ __metadata: languageName: node linkType: hard -"resolve-pkg-maps@npm:^1.0.0": - version: 1.0.0 - resolution: "resolve-pkg-maps@npm:1.0.0" - checksum: 10/0763150adf303040c304009231314d1e84c6e5ebfa2d82b7d94e96a6e82bacd1dcc0b58ae257315f3c8adb89a91d8d0f12928241cba2df1680fbe6f60bf99b0e - languageName: node - linkType: hard - "resolve.exports@npm:^2.0.0": version: 2.0.2 resolution: "resolve.exports@npm:2.0.2" @@ -36530,7 +34603,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.6, resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:^1.22.4, resolve@npm:^1.22.8, resolve@npm:~1.22.1": +"resolve@npm:^1.1.6, resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:^1.22.8, resolve@npm:~1.22.1": version: 1.22.11 resolution: "resolve@npm:1.22.11" dependencies: @@ -36543,19 +34616,6 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^2.0.0-next.5": - version: 2.0.0-next.5 - resolution: "resolve@npm:2.0.0-next.5" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10/2d6fd28699f901744368e6f2032b4268b4c7b9185fd8beb64f68c93ac6b22e52ae13560ceefc96241a665b985edf9ffd393ae26d2946a7d3a07b7007b7d51e79 - languageName: node - linkType: hard - "resolve@npm:~1.19.0": version: 1.19.0 resolution: "resolve@npm:1.19.0" @@ -36579,7 +34639,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.12.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin, resolve@patch:resolve@npm%3A~1.22.1#optional!builtin": +"resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.12.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin, resolve@patch:resolve@npm%3A~1.22.1#optional!builtin": version: 1.22.11 resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" dependencies: @@ -36592,19 +34652,6 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^2.0.0-next.5#optional!builtin": - version: 2.0.0-next.5 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin::version=2.0.0-next.5&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 10/05fa778de9d0347c8b889eb7a18f1f06bf0f801b0eb4610b4871a4b2f22e220900cf0ad525e94f990bb8d8921c07754ab2122c0c225ab4cdcea98f36e64fa4c2 - languageName: node - linkType: hard - "resolve@patch:resolve@npm%3A~1.19.0#optional!builtin": version: 1.19.0 resolution: "resolve@patch:resolve@npm%3A1.19.0#optional!builtin::version=1.19.0&hash=c3c19d" @@ -37255,7 +35302,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.0, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3, semver@npm:^7.7.1, semver@npm:^7.7.3": +"semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.0, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.3, semver@npm:^7.7.3": version: 7.7.3 resolution: "semver@npm:7.7.3" bin: @@ -37841,13 +35888,6 @@ __metadata: languageName: node linkType: hard -"slash@npm:^4.0.0": - version: 4.0.0 - resolution: "slash@npm:4.0.0" - checksum: 10/da8e4af73712253acd21b7853b7e0dbba776b786e82b010a5bfc8b5051a1db38ed8aba8e1e8f400dd2c9f373be91eb1c42b66e91abb407ff42b10feece5e1d2d - languageName: node - linkType: hard - "slash@npm:^5.0.0": version: 5.1.0 resolution: "slash@npm:5.1.0" @@ -38088,7 +36128,7 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.5.0, source-map@npm:^0.5.7": +"source-map@npm:^0.5.7": version: 0.5.7 resolution: "source-map@npm:0.5.7" checksum: 10/9b4ac749ec5b5831cad1f8cc4c19c4298ebc7474b24a0acf293e2f040f03f8eeccb3d01f12aa0f90cf46d555c887e03912b83a042c627f419bda5152d89c5269 @@ -38293,13 +36333,6 @@ __metadata: languageName: node linkType: hard -"stable-hash-x@npm:^0.2.0": - version: 0.2.0 - resolution: "stable-hash-x@npm:0.2.0" - checksum: 10/136f05d0e4d441876012b423541476ff5b695c93b56d1959560be858b9e324ea6de6c16ecbd735a040ee8396427dd867bed0bf90b2cdb1fc422566747b91a0e5 - languageName: node - linkType: hard - "stack-generator@npm:^2.0.5": version: 2.0.10 resolution: "stack-generator@npm:2.0.10" @@ -38513,27 +36546,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.12": - version: 4.0.12 - resolution: "string.prototype.matchall@npm:4.0.12" - dependencies: - call-bind: "npm:^1.0.8" - call-bound: "npm:^1.0.3" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.6" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.6" - gopd: "npm:^1.2.0" - has-symbols: "npm:^1.1.0" - internal-slot: "npm:^1.1.0" - regexp.prototype.flags: "npm:^1.5.3" - set-function-name: "npm:^2.0.2" - side-channel: "npm:^1.1.0" - checksum: 10/e4ab34b9e7639211e6c5e9759adb063028c5c5c4fc32ad967838b2bd1e5ce83a66ae8ec755d24a79302849f090b59194571b2c33471e86e7821b21c0f56df316 - languageName: node - linkType: hard - "string.prototype.padend@npm:^3.0.0": version: 3.1.6 resolution: "string.prototype.padend@npm:3.1.6" @@ -38546,16 +36558,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.repeat@npm:^1.0.0": - version: 1.0.0 - resolution: "string.prototype.repeat@npm:1.0.0" - dependencies: - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.17.5" - checksum: 10/4b1bd91b75fa8fdf0541625184ebe80e445a465ce4253c19c3bccd633898005dadae0f74b85ae72662a53aafb8035bf48f8f5c0755aec09bc106a7f13959d05e - languageName: node - linkType: hard - "string.prototype.trim@npm:^1.2.10": version: 1.2.10 resolution: "string.prototype.trim@npm:1.2.10" @@ -39095,16 +37097,6 @@ __metadata: languageName: node linkType: hard -"synckit@npm:^0.8.4": - version: 0.8.4 - resolution: "synckit@npm:0.8.4" - dependencies: - "@pkgr/utils": "npm:^2.3.1" - tslib: "npm:^2.4.0" - checksum: 10/2b9ede22ab6a75ccbea352de3dc0ee985c16e67d8adefa86c2f1e7069561496bda4368aa7e05cf3b43f68835f03c139e503bea779875661464eb8601c720d833 - languageName: node - linkType: hard - "tabbable@npm:^6.3.0": version: 6.3.0 resolution: "tabbable@npm:6.3.0" @@ -39438,16 +37430,6 @@ __metadata: languageName: node linkType: hard -"tiny-glob@npm:^0.2.9": - version: 0.2.9 - resolution: "tiny-glob@npm:0.2.9" - dependencies: - globalyzer: "npm:0.1.0" - globrex: "npm:^0.1.2" - checksum: 10/5fb773747f6a8fcae4b8884642901fa7b884879695186c422eb24b2213dfe90645f34225ced586329b3080d850472ea938646ab1c8b3a2989f9fa038fef8eee3 - languageName: node - linkType: hard - "tiny-inflate@npm:^1.0.0": version: 1.0.3 resolution: "tiny-inflate@npm:1.0.3" @@ -39497,7 +37479,7 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.10, tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.2": +"tinyglobby@npm:^0.2.10, tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.2": version: 0.2.15 resolution: "tinyglobby@npm:0.2.15" dependencies: @@ -39607,13 +37589,6 @@ __metadata: languageName: node linkType: hard -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: 10/be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -39862,15 +37837,6 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^2.1.0": - version: 2.1.0 - resolution: "ts-api-utils@npm:2.1.0" - peerDependencies: - typescript: ">=4.8.4" - checksum: 10/02e55b49d9617c6eebf8aadfa08d3ca03ca0cd2f0586ad34117fdfc7aa3cd25d95051843fde9df86665ad907f99baed179e7a117b11021417f379e4d2614eacd - languageName: node - linkType: hard - "ts-debounce@npm:^4.0.0": version: 4.0.0 resolution: "ts-debounce@npm:4.0.0" @@ -39979,44 +37945,6 @@ __metadata: languageName: node linkType: hard -"ts-node-maintained@npm:10.9.5": - version: 10.9.5 - resolution: "ts-node-maintained@npm:10.9.5" - dependencies: - "@cspotcode/source-map-support": "npm:^0.8.0" - "@tsconfig/node10": "npm:^1.0.7" - "@tsconfig/node12": "npm:^1.0.7" - "@tsconfig/node14": "npm:^1.0.0" - "@tsconfig/node16": "npm:^1.0.2" - acorn: "npm:^8.4.1" - acorn-walk: "npm:^8.1.1" - arg: "npm:^4.1.0" - create-require: "npm:^1.1.0" - diff: "npm:^4.0.1" - make-error: "npm:^1.1.1" - v8-compile-cache-lib: "npm:^3.0.1" - yn: "npm:3.1.1" - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - bin: - ts-node: dist/bin.js - ts-node-cwd: dist/bin-cwd.js - ts-node-esm: dist/bin-esm.js - ts-node-script: dist/bin-script.js - ts-node-transpile-only: dist/bin-transpile.js - ts-script: dist/bin-script-deprecated.js - checksum: 10/eeb2e582d738b491d896508744c10bb71bdb1e578e8dc494709d2f0223fd6ae8c3b22834bc4224e7cd21b92994ba2aebc50bab29c32297cf866ca3fc689ffb1c - languageName: node - linkType: hard - "ts-node@npm:10.9.2, ts-node@npm:^10.9.1": version: 10.9.2 resolution: "ts-node@npm:10.9.2" @@ -40111,18 +38039,6 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^3.15.0": - version: 3.15.0 - resolution: "tsconfig-paths@npm:3.15.0" - dependencies: - "@types/json5": "npm:^0.0.29" - json5: "npm:^1.0.2" - minimist: "npm:^1.2.6" - strip-bom: "npm:^3.0.0" - checksum: 10/2041beaedc6c271fc3bedd12e0da0cc553e65d030d4ff26044b771fac5752d0460944c0b5e680f670c2868c95c664a256cec960ae528888db6ded83524e33a14 - languageName: node - linkType: hard - "tsdav@npm:2.0.3": version: 2.0.3 resolution: "tsdav@npm:2.0.3" @@ -40156,7 +38072,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.0.0, tslib@npm:^1.10.0, tslib@npm:^1.8.1": +"tslib@npm:^1.0.0, tslib@npm:^1.10.0": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: 10/7dbf34e6f55c6492637adb81b555af5e3b4f9cc6b998fb440dac82d3b42bdc91560a35a5fb75e20e24a076c651438234da6743d139e4feabf0783f3cdfe1dddb @@ -40177,17 +38093,6 @@ __metadata: languageName: node linkType: hard -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: "npm:^1.8.1" - 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" - checksum: 10/ea036bec1dd024e309939ffd49fda7a351c0e87a1b8eb049570dd119d447250e2c56e0e6c00554e8205760e7417793fdebff752a46e573fbe07d4f375502a5b2 - languageName: node - linkType: hard - "tunnel-agent@npm:*, tunnel-agent@npm:^0.6.0": version: 0.6.0 resolution: "tunnel-agent@npm:0.6.0" @@ -40381,15 +38286,6 @@ __metadata: languageName: node linkType: hard -"type-check@npm:^0.4.0, type-check@npm:~0.4.0": - version: 0.4.0 - resolution: "type-check@npm:0.4.0" - dependencies: - prelude-ls: "npm:^1.2.1" - checksum: 10/14687776479d048e3c1dbfe58a2409e00367810d6960c0f619b33793271ff2a27f81b52461f14a162f1f89a9b1d8da1b237fc7c99b0e1fdcec28ec63a86b1fec - languageName: node - linkType: hard - "type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" @@ -40646,21 +38542,6 @@ __metadata: languageName: node linkType: hard -"typescript-eslint@npm:8.40.0": - version: 8.40.0 - resolution: "typescript-eslint@npm:8.40.0" - dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.40.0" - "@typescript-eslint/parser": "npm:8.40.0" - "@typescript-eslint/typescript-estree": "npm:8.40.0" - "@typescript-eslint/utils": "npm:8.40.0" - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: ">=4.8.4 <6.0.0" - checksum: 10/b96dc4e70bd551e5399b928e946957cce622cba89f0ff87521f9e93f223acbe406930a1ebee845b158f586959cb7d85f15ea2250b97341aa87f50a3c987d068a - languageName: node - linkType: hard - "typescript@npm:4.9.5": version: 4.9.5 resolution: "typescript@npm:4.9.5" @@ -41064,73 +38945,6 @@ __metadata: languageName: node linkType: hard -"unrs-resolver@npm:^1.7.11": - version: 1.11.1 - resolution: "unrs-resolver@npm:1.11.1" - dependencies: - "@unrs/resolver-binding-android-arm-eabi": "npm:1.11.1" - "@unrs/resolver-binding-android-arm64": "npm:1.11.1" - "@unrs/resolver-binding-darwin-arm64": "npm:1.11.1" - "@unrs/resolver-binding-darwin-x64": "npm:1.11.1" - "@unrs/resolver-binding-freebsd-x64": "npm:1.11.1" - "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.11.1" - "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.11.1" - "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-arm64-musl": "npm:1.11.1" - "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.11.1" - "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-x64-gnu": "npm:1.11.1" - "@unrs/resolver-binding-linux-x64-musl": "npm:1.11.1" - "@unrs/resolver-binding-wasm32-wasi": "npm:1.11.1" - "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.11.1" - "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.11.1" - "@unrs/resolver-binding-win32-x64-msvc": "npm:1.11.1" - napi-postinstall: "npm:^0.3.0" - dependenciesMeta: - "@unrs/resolver-binding-android-arm-eabi": - optional: true - "@unrs/resolver-binding-android-arm64": - optional: true - "@unrs/resolver-binding-darwin-arm64": - optional: true - "@unrs/resolver-binding-darwin-x64": - optional: true - "@unrs/resolver-binding-freebsd-x64": - optional: true - "@unrs/resolver-binding-linux-arm-gnueabihf": - optional: true - "@unrs/resolver-binding-linux-arm-musleabihf": - optional: true - "@unrs/resolver-binding-linux-arm64-gnu": - optional: true - "@unrs/resolver-binding-linux-arm64-musl": - optional: true - "@unrs/resolver-binding-linux-ppc64-gnu": - optional: true - "@unrs/resolver-binding-linux-riscv64-gnu": - optional: true - "@unrs/resolver-binding-linux-riscv64-musl": - optional: true - "@unrs/resolver-binding-linux-s390x-gnu": - optional: true - "@unrs/resolver-binding-linux-x64-gnu": - optional: true - "@unrs/resolver-binding-linux-x64-musl": - optional: true - "@unrs/resolver-binding-wasm32-wasi": - optional: true - "@unrs/resolver-binding-win32-arm64-msvc": - optional: true - "@unrs/resolver-binding-win32-ia32-msvc": - optional: true - "@unrs/resolver-binding-win32-x64-msvc": - optional: true - checksum: 10/4de653508cbaae47883a896bd5cdfef0e5e87b428d62620d16fd35cd534beaebf08ebf0cf2f8b4922aa947b2fe745180facf6cc3f39ba364f7ce0f974cb06a70 - languageName: node - linkType: hard - "update-browserslist-db@npm:^1.2.0": version: 1.2.2 resolution: "update-browserslist-db@npm:1.2.2" @@ -42233,13 +40047,6 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:^1.2.5": - version: 1.2.5 - resolution: "word-wrap@npm:1.2.5" - checksum: 10/1ec6f6089f205f83037be10d0c4b34c9183b0b63fca0834a5b3cee55dd321429d73d40bb44c8fc8471b5203d6e8f8275717f49a8ff4b2b0ab41d7e1b563e0854 - languageName: node - linkType: hard - "wordwrap@npm:^1.0.0": version: 1.0.0 resolution: "wordwrap@npm:1.0.0"