Upgrade NX (#13758)

Upgrade from NX18 to NX21
This commit is contained in:
Félix Malfait
2025-08-08 10:38:12 +02:00
committed by GitHub
parent 4708ff34c7
commit 033bedde0a
58 changed files with 3676 additions and 820 deletions
+1
View File
@@ -9,6 +9,7 @@
.nx/installation .nx/installation
.nx/cache .nx/cache
.nx/workspace-data
.pnp.* .pnp.*
.yarn/* .yarn/*
+40 -151
View File
@@ -1,12 +1,7 @@
{ {
"workspaceLayout": { "workspaceLayout": { "appsDir": "packages", "libsDir": "packages" },
"appsDir": "packages",
"libsDir": "packages"
},
"namedInputs": { "namedInputs": {
"default": [ "default": ["{projectRoot}/**/*"],
"{projectRoot}/**/*"
],
"excludeStories": [ "excludeStories": [
"default", "default",
"!{projectRoot}/.storybook/*", "!{projectRoot}/.storybook/*",
@@ -34,26 +29,14 @@
"targetDefaults": { "targetDefaults": {
"build": { "build": {
"cache": true, "cache": true,
"inputs": [ "inputs": ["^production", "production"],
"^production", "dependsOn": ["^build"]
"production"
],
"dependsOn": [
"^build"
]
},
"start": {
"cache": true,
"dependsOn": [
"^build"
]
}, },
"start": { "cache": true, "dependsOn": ["^build"] },
"lint": { "lint": {
"executor": "@nx/eslint:lint", "executor": "@nx/eslint:lint",
"cache": true, "cache": true,
"outputs": [ "outputs": ["{options.outputFile}"],
"{options.outputFile}"
],
"options": { "options": {
"eslintConfig": "{projectRoot}/.eslintrc.cjs", "eslintConfig": "{projectRoot}/.eslintrc.cjs",
"cache": true, "cache": true,
@@ -61,16 +44,10 @@
"ignorePath": "{workspaceRoot}/.gitignore" "ignorePath": "{workspaceRoot}/.gitignore"
}, },
"configurations": { "configurations": {
"ci": { "ci": { "cacheStrategy": "content" },
"cacheStrategy": "content" "fix": { "fix": true }
},
"fix": {
"fix": true
}
}, },
"dependsOn": [ "dependsOn": ["^build"]
"^build"
]
}, },
"fmt": { "fmt": {
"executor": "nx:run-commands", "executor": "nx:run-commands",
@@ -84,16 +61,10 @@
"write": false "write": false
}, },
"configurations": { "configurations": {
"ci": { "ci": { "cacheStrategy": "content" },
"cacheStrategy": "content" "fix": { "write": true }
},
"fix": {
"write": true
}
}, },
"dependsOn": [ "dependsOn": ["^build"]
"^build"
]
}, },
"typecheck": { "typecheck": {
"executor": "nx:run-commands", "executor": "nx:run-commands",
@@ -102,85 +73,49 @@
"cwd": "{projectRoot}", "cwd": "{projectRoot}",
"command": "tsc -b tsconfig.json --incremental" "command": "tsc -b tsconfig.json --incremental"
}, },
"configurations": { "configurations": { "watch": { "watch": true } },
"watch": { "dependsOn": ["^build"]
"watch": true
}
},
"dependsOn": [
"^build"
]
}, },
"test": { "test": {
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"cache": true, "cache": true,
"dependsOn": [ "dependsOn": ["^build"],
"^build"
],
"inputs": [ "inputs": [
"^default", "^default",
"excludeStories", "excludeStories",
"{workspaceRoot}/jest.preset.js" "{workspaceRoot}/jest.preset.js"
], ],
"outputs": [ "outputs": ["{projectRoot}/coverage"],
"{projectRoot}/coverage"
],
"options": { "options": {
"jestConfig": "{projectRoot}/jest.config.ts", "jestConfig": "{projectRoot}/jest.config.ts",
"coverage": true, "coverage": true,
"coverageReporters": [ "coverageReporters": ["text-summary"],
"text-summary"
],
"cacheDirectory": "../../.cache/jest/{projectRoot}" "cacheDirectory": "../../.cache/jest/{projectRoot}"
}, },
"configurations": { "configurations": {
"ci": { "ci": { "ci": true, "maxWorkers": 3 },
"ci": true, "coverage": { "coverageReporters": ["lcov", "text"] },
"maxWorkers": 3 "watch": { "watch": true }
},
"coverage": {
"coverageReporters": [
"lcov",
"text"
]
},
"watch": {
"watch": true
}
} }
}, },
"test:e2e": { "test:e2e": { "cache": true, "dependsOn": ["^build"] },
"cache": true,
"dependsOn": [
"^build"
]
},
"storybook:build": { "storybook:build": {
"executor": "nx:run-commands", "executor": "nx:run-commands",
"cache": true, "cache": true,
"inputs": [ "inputs": ["^default", "excludeTests"],
"^default", "outputs": ["{projectRoot}/{options.output-dir}"],
"excludeTests"
],
"outputs": [
"{projectRoot}/{options.output-dir}"
],
"options": { "options": {
"cwd": "{projectRoot}", "cwd": "{projectRoot}",
"command": "VITE_DISABLE_TYPESCRIPT_CHECKER=true VITE_DISABLE_ESLINT_CHECKER=true storybook build --test", "command": "VITE_DISABLE_TYPESCRIPT_CHECKER=true VITE_DISABLE_ESLINT_CHECKER=true storybook build --test",
"output-dir": "storybook-static", "output-dir": "storybook-static",
"config-dir": ".storybook" "config-dir": ".storybook"
}, },
"dependsOn": [ "dependsOn": ["^build"]
"^build"
]
}, },
"storybook:serve:dev": { "storybook:serve:dev": {
"executor": "nx:run-commands", "executor": "nx:run-commands",
"cache": true, "cache": true,
"dependsOn": [ "dependsOn": ["^build"],
"^build"
],
"options": { "options": {
"cwd": "{projectRoot}", "cwd": "{projectRoot}",
"command": "storybook dev", "command": "storybook dev",
@@ -189,9 +124,7 @@
}, },
"storybook:serve:static": { "storybook:serve:static": {
"executor": "nx:run-commands", "executor": "nx:run-commands",
"dependsOn": [ "dependsOn": ["storybook:build"],
"storybook:build"
],
"options": { "options": {
"cwd": "{projectRoot}", "cwd": "{projectRoot}",
"command": "npx http-server {args.staticDir} -a={args.host} --port={args.port} --silent={args.silent}", "command": "npx http-server {args.staticDir} -a={args.host} --port={args.port} --silent={args.silent}",
@@ -204,13 +137,8 @@
"storybook:test": { "storybook:test": {
"executor": "nx:run-commands", "executor": "nx:run-commands",
"cache": true, "cache": true,
"inputs": [ "inputs": ["^default", "excludeTests"],
"^default", "outputs": ["{projectRoot}/coverage/storybook"],
"excludeTests"
],
"outputs": [
"{projectRoot}/coverage/storybook"
],
"options": { "options": {
"cwd": "{projectRoot}", "cwd": "{projectRoot}",
"commands": [ "commands": [
@@ -226,10 +154,7 @@
}, },
"storybook:test:no-coverage": { "storybook:test:no-coverage": {
"executor": "nx:run-commands", "executor": "nx:run-commands",
"inputs": [ "inputs": ["^default", "excludeTests"],
"^default",
"excludeTests"
],
"options": { "options": {
"cwd": "{projectRoot}", "cwd": "{projectRoot}",
"commands": [ "commands": [
@@ -256,11 +181,7 @@
"reporter": "lcov", "reporter": "lcov",
"checkCoverage": true "checkCoverage": true
}, },
"configurations": { "configurations": { "text": { "reporter": "text" } }
"text": {
"reporter": "text"
}
}
}, },
"storybook:serve-and-test:static": { "storybook:serve-and-test:static": {
"executor": "nx:run-commands", "executor": "nx:run-commands",
@@ -286,11 +207,7 @@
], ],
"parallel": false "parallel": false
}, },
"configurations": { "configurations": { "ci": { "ci": "--exit-zero-on-changes" } }
"ci": {
"ci": "--exit-zero-on-changes"
}
}
}, },
"@nx/jest:jest": { "@nx/jest:jest": {
"cache": true, "cache": true,
@@ -299,15 +216,8 @@
"excludeStories", "excludeStories",
"{workspaceRoot}/jest.preset.js" "{workspaceRoot}/jest.preset.js"
], ],
"options": { "options": { "passWithNoTests": true },
"passWithNoTests": true "configurations": { "ci": { "ci": true, "codeCoverage": true } }
},
"configurations": {
"ci": {
"ci": true,
"codeCoverage": true
}
}
}, },
"@nx/eslint:lint": { "@nx/eslint:lint": {
"cache": true, "cache": true,
@@ -317,27 +227,14 @@
"{workspaceRoot}/tools/eslint-rules/**/*" "{workspaceRoot}/tools/eslint-rules/**/*"
] ]
}, },
"@nx/vite:test": { "@nx/vite:test": { "cache": true, "inputs": ["default", "^default"] },
"cache": true,
"inputs": [
"default",
"^default"
]
},
"@nx/vite:build": { "@nx/vite:build": {
"cache": true, "cache": true,
"dependsOn": [ "dependsOn": ["^build"],
"^build" "inputs": ["default", "^default"]
],
"inputs": [
"default",
"^default"
]
} }
}, },
"installation": { "installation": { "version": "21.3.11" },
"version": "18.3.3"
},
"generators": { "generators": {
"@nx/react": { "@nx/react": {
"application": { "application": {
@@ -356,20 +253,12 @@
"unitTestRunner": "jest", "unitTestRunner": "jest",
"projectNameAndRootFormat": "derived" "projectNameAndRootFormat": "derived"
}, },
"component": { "component": { "style": "@emotion/styled" }
"style": "@emotion/styled"
}
} }
}, },
"tasksRunnerOptions": { "tasksRunnerOptions": {
"default": { "default": { "options": { "cacheableOperations": ["storybook:build"] } }
"options": {
"cacheableOperations": [
"storybook:build"
]
}
}
}, },
"useInferencePlugins": false, "useInferencePlugins": false,
"defaultBase": "main" "defaultBase": "main"
} }
+10 -10
View File
@@ -33,7 +33,7 @@
"@nestjs/serve-static": "^4.0.1", "@nestjs/serve-static": "^4.0.1",
"@nestjs/terminus": "^11.0.0", "@nestjs/terminus": "^11.0.0",
"@nestjs/typeorm": "^10.0.0", "@nestjs/typeorm": "^10.0.0",
"@nx/eslint-plugin": "^17.2.8", "@nx/eslint-plugin": "21.3.11",
"@octokit/graphql": "^7.0.2", "@octokit/graphql": "^7.0.2",
"@ptc-org/nestjs-query-core": "^4.2.0", "@ptc-org/nestjs-query-core": "^4.2.0",
"@ptc-org/nestjs-query-typeorm": "4.2.1-alpha.2", "@ptc-org/nestjs-query-typeorm": "4.2.1-alpha.2",
@@ -195,14 +195,14 @@
"@nestjs/schematics": "^9.0.0", "@nestjs/schematics": "^9.0.0",
"@nestjs/testing": "^9.0.0", "@nestjs/testing": "^9.0.0",
"@next/eslint-plugin-next": "^14.1.4", "@next/eslint-plugin-next": "^14.1.4",
"@nx/eslint": "18.3.3", "@nx/eslint": "21.3.11",
"@nx/eslint-plugin": "18.3.3", "@nx/eslint-plugin": "21.3.11",
"@nx/jest": "18.3.3", "@nx/jest": "21.3.11",
"@nx/js": "18.3.3", "@nx/js": "21.3.11",
"@nx/react": "18.3.3", "@nx/react": "21.3.11",
"@nx/storybook": "18.3.3", "@nx/storybook": "21.3.11",
"@nx/vite": "18.3.3", "@nx/vite": "21.3.11",
"@nx/web": "18.3.3", "@nx/web": "21.3.11",
"@playwright/test": "^1.46.0", "@playwright/test": "^1.46.0",
"@sentry/types": "^8", "@sentry/types": "^8",
"@storybook/addon-actions": "^7.6.3", "@storybook/addon-actions": "^7.6.3",
@@ -303,7 +303,7 @@
"jsdom": "~22.1.0", "jsdom": "~22.1.0",
"msw": "^2.0.11", "msw": "^2.0.11",
"msw-storybook-addon": "2.0.0--canary.122.b3ed3b1.0", "msw-storybook-addon": "2.0.0--canary.122.b3ed3b1.0",
"nx": "18.3.3", "nx": "21.3.11",
"playwright": "^1.46.0", "playwright": "^1.46.0",
"prettier": "^3.1.1", "prettier": "^3.1.1",
"raw-loader": "^4.0.2", "raw-loader": "^4.0.2",
+1 -1
View File
@@ -72,7 +72,7 @@
"@faker-js/faker": "^9.8.0", "@faker-js/faker": "^9.8.0",
"@lingui/cli": "^5.1.2", "@lingui/cli": "^5.1.2",
"@nestjs/cli": "10.3.0", "@nestjs/cli": "10.3.0",
"@nx/js": "18.3.3", "@nx/js": "21.3.11",
"@types/express-session": "^1.18.0", "@types/express-session": "^1.18.0",
"@types/lodash.differencewith": "^4.5.9", "@types/lodash.differencewith": "^4.5.9",
"@types/lodash.isempty": "^4.4.7", "@types/lodash.isempty": "^4.4.7",
@@ -1,4 +1,4 @@
import { Metadata } from 'next'; import { type Metadata } from 'next';
export const metadata: Metadata = { export const metadata: Metadata = {
title: 'Twenty.com', title: 'Twenty.com',
@@ -1,6 +1,6 @@
export const dynamic = 'force-dynamic'; export const dynamic = 'force-dynamic';
import { Metadata } from 'next'; import { type Metadata } from 'next';
import { getContributorActivity } from '@/app/(public)/contributors/utils/get-contributor-activity'; import { getContributorActivity } from '@/app/(public)/contributors/utils/get-contributor-activity';
import { ActivityLog } from '@/app/_components/contributors/ActivityLog'; import { ActivityLog } from '@/app/_components/contributors/ActivityLog';
@@ -1,4 +1,4 @@
import { Metadata } from 'next'; import { type Metadata } from 'next';
import { notFound } from 'next/navigation'; import { notFound } from 'next/navigation';
import DocsContent from '@/app/_components/docs/DocsContent'; import DocsContent from '@/app/_components/docs/DocsContent';
@@ -1,4 +1,4 @@
import { ReactNode } from 'react'; import { type ReactNode } from 'react';
import { DocsMainLayout } from '@/app/_components/docs/DocsMainLayout'; import { DocsMainLayout } from '@/app/_components/docs/DocsMainLayout';
import { getDocsArticles } from '@/content/user-guide/constants/getDocsArticles'; import { getDocsArticles } from '@/content/user-guide/constants/getDocsArticles';
@@ -1,4 +1,4 @@
import { Metadata } from 'next'; import { type Metadata } from 'next';
import { notFound } from 'next/navigation'; import { notFound } from 'next/navigation';
import DocsContent from '@/app/_components/docs/DocsContent'; import DocsContent from '@/app/_components/docs/DocsContent';
@@ -1,4 +1,4 @@
import { Metadata } from 'next'; import { type Metadata } from 'next';
import { notFound } from 'next/navigation'; import { notFound } from 'next/navigation';
import DocsMain from '@/app/_components/docs/DocsMain'; import DocsMain from '@/app/_components/docs/DocsMain';
@@ -1,4 +1,4 @@
import { Metadata } from 'next'; import { type Metadata } from 'next';
import { PublicEnvScript } from 'next-runtime-env'; import { PublicEnvScript } from 'next-runtime-env';
import { Gabarito, Inter } from 'next/font/google'; import { Gabarito, Inter } from 'next/font/google';
@@ -1,5 +1,5 @@
import { Background } from '@/app/_components/oss-friends/Background'; import { Background } from '@/app/_components/oss-friends/Background';
import { Card, OssData } from '@/app/_components/oss-friends/Card'; import { Card, type OssData } from '@/app/_components/oss-friends/Card';
import { CardContainer } from '@/app/_components/oss-friends/CardContainer'; import { CardContainer } from '@/app/_components/oss-friends/CardContainer';
import { ContentContainer } from '@/app/_components/oss-friends/ContentContainer'; import { ContentContainer } from '@/app/_components/oss-friends/ContentContainer';
import { Header } from '@/app/_components/oss-friends/Header'; import { Header } from '@/app/_components/oss-friends/Header';
@@ -1,4 +1,4 @@
import { NextRequest, NextResponse } from 'next/server'; import { type NextRequest, NextResponse } from 'next/server';
import { getReleases } from '@/app/(public)/releases/utils/get-releases'; import { getReleases } from '@/app/(public)/releases/utils/get-releases';
@@ -1,5 +1,5 @@
import { desc } from 'drizzle-orm'; import { desc } from 'drizzle-orm';
import { Metadata } from 'next'; import { type Metadata } from 'next';
import { import {
getMdxReleasesContent, getMdxReleasesContent,
@@ -10,7 +10,7 @@ import { ReleaseContainer } from '@/app/_components/releases/ReleaseContainer';
import { Title } from '@/app/_components/releases/StyledTitle'; import { Title } from '@/app/_components/releases/StyledTitle';
import { ContentContainer } from '@/app/_components/ui/layout/ContentContainer'; import { ContentContainer } from '@/app/_components/ui/layout/ContentContainer';
import { findAll } from '@/database/database'; import { findAll } from '@/database/database';
import { GithubReleases, githubReleasesModel } from '@/database/model'; import { type GithubReleases, githubReleasesModel } from '@/database/model';
import { pgGithubReleasesModel } from '@/database/schema-postgres'; import { pgGithubReleasesModel } from '@/database/schema-postgres';
export const metadata: Metadata = { export const metadata: Metadata = {
@@ -1,4 +1,4 @@
import { GithubReleases } from '@/database/model'; import { type GithubReleases } from '@/database/model';
function formatDate(dateString: string) { function formatDate(dateString: string) {
const date = new Date(dateString); const date = new Date(dateString);
@@ -1,10 +1,10 @@
import fs from 'fs'; import fs from 'fs';
import matter from 'gray-matter'; import matter from 'gray-matter';
import { compileMDX } from 'next-mdx-remote/rsc'; import { compileMDX } from 'next-mdx-remote/rsc';
import { JSXElementConstructor, ReactElement } from 'react'; import { type JSXElementConstructor, type ReactElement } from 'react';
import gfm from 'remark-gfm'; import gfm from 'remark-gfm';
import { ReleaseNote } from '@/app/(public)/releases/api/route'; import { type ReleaseNote } from '@/app/(public)/releases/api/route';
import { compareSemanticVersions } from '@/shared-utils/compareSemanticVersions'; import { compareSemanticVersions } from '@/shared-utils/compareSemanticVersions';
// WARNING: This API is used by twenty-front, not just by twenty-website // WARNING: This API is used by twenty-front, not just by twenty-website
@@ -1,4 +1,4 @@
import { ReleaseNote } from '@/app/(public)/releases/api/route'; import { type ReleaseNote } from '@/app/(public)/releases/api/route';
import { getFormattedReleaseNumber } from '@/app/(public)/releases/utils/get-formatted-release-number'; import { getFormattedReleaseNumber } from '@/app/(public)/releases/utils/get-formatted-release-number';
export const getVisibleReleases = ( export const getVisibleReleases = (
@@ -1,4 +1,4 @@
import { Metadata } from 'next'; import { type Metadata } from 'next';
import { notFound } from 'next/navigation'; import { notFound } from 'next/navigation';
import DocsContent from '@/app/_components/docs/DocsContent'; import DocsContent from '@/app/_components/docs/DocsContent';
@@ -1,4 +1,4 @@
import { ReactNode } from 'react'; import { type ReactNode } from 'react';
import { DocsMainLayout } from '@/app/_components/docs/DocsMainLayout'; import { DocsMainLayout } from '@/app/_components/docs/DocsMainLayout';
import { getDocsArticles } from '@/content/user-guide/constants/getDocsArticles'; import { getDocsArticles } from '@/content/user-guide/constants/getDocsArticles';
@@ -1,4 +1,4 @@
import { Metadata } from 'next'; import { type Metadata } from 'next';
import { notFound } from 'next/navigation'; import { notFound } from 'next/navigation';
import DocsContent from '@/app/_components/docs/DocsContent'; import DocsContent from '@/app/_components/docs/DocsContent';
@@ -1,4 +1,4 @@
import { Metadata } from 'next'; import { type Metadata } from 'next';
import { notFound } from 'next/navigation'; import { notFound } from 'next/navigation';
import DocsMain from '@/app/_components/docs/DocsMain'; import DocsMain from '@/app/_components/docs/DocsMain';
@@ -1,4 +1,4 @@
import { Metadata } from 'next'; import { type Metadata } from 'next';
import { notFound } from 'next/navigation'; import { notFound } from 'next/navigation';
import DocsContent from '@/app/_components/docs/DocsContent'; import DocsContent from '@/app/_components/docs/DocsContent';
@@ -1,4 +1,4 @@
import { ReactNode } from 'react'; import { type ReactNode } from 'react';
import { DocsMainLayout } from '@/app/_components/docs/DocsMainLayout'; import { DocsMainLayout } from '@/app/_components/docs/DocsMainLayout';
import { getDocsArticles } from '@/content/user-guide/constants/getDocsArticles'; import { getDocsArticles } from '@/content/user-guide/constants/getDocsArticles';
@@ -1,4 +1,4 @@
import { Metadata } from 'next'; import { type Metadata } from 'next';
import { notFound } from 'next/navigation'; import { notFound } from 'next/navigation';
import DocsContent from '@/app/_components/docs/DocsContent'; import DocsContent from '@/app/_components/docs/DocsContent';
@@ -1,4 +1,4 @@
import { Metadata } from 'next'; import { type Metadata } from 'next';
import { notFound } from 'next/navigation'; import { notFound } from 'next/navigation';
import DocsMain from '@/app/_components/docs/DocsMain'; import DocsMain from '@/app/_components/docs/DocsMain';
@@ -4,7 +4,7 @@ import Link from 'next/link';
import { usePathname } from 'next/navigation'; import { usePathname } from 'next/navigation';
import { Theme } from '@/app/_components/ui/theme/theme'; import { Theme } from '@/app/_components/ui/theme/theme';
import { DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles'; import { type DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles';
import { getCardPath } from '@/shared-utils/getCardPath'; import { getCardPath } from '@/shared-utils/getCardPath';
const StyledContainer = styled(Link)` const StyledContainer = styled(Link)`
@@ -8,7 +8,7 @@ import { ArticleContent } from '@/app/_components/ui/layout/articles/ArticleCont
import { Breadcrumbs } from '@/app/_components/ui/layout/Breadcrumbs'; import { Breadcrumbs } from '@/app/_components/ui/layout/Breadcrumbs';
import mq from '@/app/_components/ui/theme/mq'; import mq from '@/app/_components/ui/theme/mq';
import { Theme } from '@/app/_components/ui/theme/theme'; import { Theme } from '@/app/_components/ui/theme/theme';
import { FileContent } from '@/app/_server-utils/get-posts'; import { type FileContent } from '@/app/_server-utils/get-posts';
import { getUriAndLabel } from '@/shared-utils/pathUtils'; import { getUriAndLabel } from '@/shared-utils/pathUtils';
const StyledContainer = styled('div')` const StyledContainer = styled('div')`
@@ -6,7 +6,7 @@ import DocsCard from '@/app/_components/docs/DocsCard';
import { Breadcrumbs } from '@/app/_components/ui/layout/Breadcrumbs'; import { Breadcrumbs } from '@/app/_components/ui/layout/Breadcrumbs';
import mq from '@/app/_components/ui/theme/mq'; import mq from '@/app/_components/ui/theme/mq';
import { Theme } from '@/app/_components/ui/theme/theme'; import { Theme } from '@/app/_components/ui/theme/theme';
import { DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles'; import { type DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles';
import { constructSections } from '@/shared-utils/constructSections'; import { constructSections } from '@/shared-utils/constructSections';
import { filterDocsIndex } from '@/shared-utils/filterDocsIndex'; import { filterDocsIndex } from '@/shared-utils/filterDocsIndex';
import { getUriAndLabel } from '@/shared-utils/pathUtils'; import { getUriAndLabel } from '@/shared-utils/pathUtils';
@@ -1,5 +1,5 @@
'use client'; 'use client';
import { ReactNode } from 'react'; import { type ReactNode } from 'react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { usePathname } from 'next/navigation'; import { usePathname } from 'next/navigation';
@@ -7,7 +7,7 @@ import DocsSidebar from '@/app/_components/docs/DocsSideBar';
import DocsTableContents from '@/app/_components/docs/TableContent'; import DocsTableContents from '@/app/_components/docs/TableContent';
import mq from '@/app/_components/ui/theme/mq'; import mq from '@/app/_components/ui/theme/mq';
import { Theme } from '@/app/_components/ui/theme/theme'; import { Theme } from '@/app/_components/ui/theme/theme';
import { DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles'; import { type DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles';
import { import {
isPlaygroundPage, isPlaygroundPage,
shouldShowEmptySidebar, shouldShowEmptySidebar,
@@ -7,7 +7,7 @@ import { AlgoliaDocSearch } from '@/app/_components/docs/AlgoliaDocSearch';
import DocsSidebarSection from '@/app/_components/docs/DocsSidebarSection'; import DocsSidebarSection from '@/app/_components/docs/DocsSidebarSection';
import mq from '@/app/_components/ui/theme/mq'; import mq from '@/app/_components/ui/theme/mq';
import { Theme } from '@/app/_components/ui/theme/theme'; import { Theme } from '@/app/_components/ui/theme/theme';
import { DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles'; import { type DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles';
import { getSectionIcon } from '@/shared-utils/getSectionIcons'; import { getSectionIcon } from '@/shared-utils/getSectionIcons';
import '@docsearch/css'; import '@docsearch/css';
@@ -7,7 +7,7 @@ import { usePathname, useRouter } from 'next/navigation';
import { IconChevronDown, IconChevronRight } from '@/app/_components/ui/icons'; import { IconChevronDown, IconChevronRight } from '@/app/_components/ui/icons';
import { Theme } from '@/app/_components/ui/theme/theme'; import { Theme } from '@/app/_components/ui/theme/theme';
import { DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles'; import { type DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles';
import { groupArticlesByTopic } from '@/content/user-guide/constants/groupArticlesByTopic'; import { groupArticlesByTopic } from '@/content/user-guide/constants/groupArticlesByTopic';
import { getCardPath } from '@/shared-utils/getCardPath'; import { getCardPath } from '@/shared-utils/getCardPath';
@@ -2,9 +2,9 @@
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { Gabarito } from 'next/font/google'; import { Gabarito } from 'next/font/google';
import { JSXElementConstructor, ReactElement } from 'react'; import { type JSXElementConstructor, type ReactElement } from 'react';
import { ReleaseNote } from '@/app/(public)/releases/api/route'; import { type ReleaseNote } from '@/app/(public)/releases/api/route';
import { ArticleContent } from '@/app/_components/ui/layout/articles/ArticleContent'; import { ArticleContent } from '@/app/_components/ui/layout/articles/ArticleContent';
import MotionContainer from '@/app/_components/ui/layout/LoaderAnimation'; import MotionContainer from '@/app/_components/ui/layout/LoaderAnimation';
import { Theme } from '@/app/_components/ui/theme/theme'; import { Theme } from '@/app/_components/ui/theme/theme';
@@ -1,11 +1,11 @@
'use client'; 'use client';
import React, { useEffect, useRef, useState } from 'react'; import React, { useEffect, useRef, useState } from 'react';
import { ReleaseNote } from '@/app/(public)/releases/api/route'; import { type ReleaseNote } from '@/app/(public)/releases/api/route';
import { getGithubReleaseDateFromReleaseNote } from '@/app/(public)/releases/utils/get-github-release-date-from-release-note'; import { getGithubReleaseDateFromReleaseNote } from '@/app/(public)/releases/utils/get-github-release-date-from-release-note';
import { Line } from '@/app/_components/releases/Line'; import { Line } from '@/app/_components/releases/Line';
import { Release } from '@/app/_components/releases/Release'; import { Release } from '@/app/_components/releases/Release';
import { GithubReleases } from '@/database/model'; import { type GithubReleases } from '@/database/model';
interface ReleaseProps { interface ReleaseProps {
visibleReleasesNotes: ReleaseNote[]; visibleReleasesNotes: ReleaseNote[];
@@ -1,7 +1,7 @@
'use client'; 'use client';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { ReactNode } from 'react'; import { type ReactNode } from 'react';
import { Theme } from '@/app/_components/ui/theme/theme'; import { Theme } from '@/app/_components/ui/theme/theme';
import { wrapHeadingsWithAnchor } from '@/shared-utils/wrapHeadingsWithAnchor'; import { wrapHeadingsWithAnchor } from '@/shared-utils/wrapHeadingsWithAnchor';
@@ -1,4 +1,4 @@
import React, { ReactNode } from 'react'; import React, { type ReactNode } from 'react';
interface ArticleLinkProps { interface ArticleLinkProps {
href: string; href: string;
@@ -1,5 +1,5 @@
'use client'; 'use client';
import { ReactNode } from 'react'; import { type ReactNode } from 'react';
import styled from '@emotion/styled'; import styled from '@emotion/styled';
import { IconAlertCircle } from '@tabler/icons-react'; import { IconAlertCircle } from '@tabler/icons-react';
@@ -1,7 +1,7 @@
import fs from 'fs'; import fs from 'fs';
import { compileMDX } from 'next-mdx-remote/rsc'; import { compileMDX } from 'next-mdx-remote/rsc';
import path from 'path'; import path from 'path';
import { ReactElement } from 'react'; import { type ReactElement } from 'react';
import gfm from 'remark-gfm'; import gfm from 'remark-gfm';
import ArticleEditContent from '@/app/_components/ui/layout/articles/ArticleEditContent'; import ArticleEditContent from '@/app/_components/ui/layout/articles/ArticleEditContent';
@@ -1,4 +1,4 @@
import { CSSProperties } from 'react'; import { type CSSProperties } from 'react';
const BACKGROUND_IMAGE_URL = const BACKGROUND_IMAGE_URL =
'https://framerusercontent.com/images/nqEmdwe7yDXNsOZovuxG5zvj2E.png'; 'https://framerusercontent.com/images/nqEmdwe7yDXNsOZovuxG5zvj2E.png';
@@ -4,7 +4,7 @@ import { getGithubReleaseDateFromReleaseNote } from '@/app/(public)/releases/uti
import { getReleases } from '@/app/(public)/releases/utils/get-releases'; import { getReleases } from '@/app/(public)/releases/utils/get-releases';
import { getVisibleReleases } from '@/app/(public)/releases/utils/get-visible-releases'; import { getVisibleReleases } from '@/app/(public)/releases/utils/get-visible-releases';
import { findAll } from '@/database/database'; import { findAll } from '@/database/database';
import { GithubReleases, githubReleasesModel } from '@/database/model'; import { type GithubReleases, githubReleasesModel } from '@/database/model';
export const dynamic = 'force-dynamic'; export const dynamic = 'force-dynamic';
@@ -1,4 +1,4 @@
import { DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles'; import { type DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles';
export const groupArticlesByTopic = ( export const groupArticlesByTopic = (
items: DocsArticlesProps[], items: DocsArticlesProps[],
@@ -1,5 +1,5 @@
import { global } from '@apollo/client/utilities/globals'; import { global } from '@apollo/client/utilities/globals';
import { drizzle, PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import { drizzle, type PostgresJsDatabase } from 'drizzle-orm/postgres-js';
import { migrate as postgresMigrate } from 'drizzle-orm/postgres-js/migrator'; import { migrate as postgresMigrate } from 'drizzle-orm/postgres-js/migrator';
import postgres from 'postgres'; import postgres from 'postgres';
@@ -1,4 +1,4 @@
import { Config } from 'drizzle-kit'; import { type Config } from 'drizzle-kit';
import 'dotenv/config'; import 'dotenv/config';
@@ -72,12 +72,8 @@
"name": "issueLabels_issueId_issues_id_fk", "name": "issueLabels_issueId_issues_id_fk",
"tableFrom": "issueLabels", "tableFrom": "issueLabels",
"tableTo": "issues", "tableTo": "issues",
"columnsFrom": [ "columnsFrom": ["issueId"],
"issueId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "no action", "onDelete": "no action",
"onUpdate": "no action" "onUpdate": "no action"
}, },
@@ -85,12 +81,8 @@
"name": "issueLabels_labelId_labels_id_fk", "name": "issueLabels_labelId_labels_id_fk",
"tableFrom": "issueLabels", "tableFrom": "issueLabels",
"tableTo": "labels", "tableTo": "labels",
"columnsFrom": [ "columnsFrom": ["labelId"],
"labelId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "no action", "onDelete": "no action",
"onUpdate": "no action" "onUpdate": "no action"
} }
@@ -163,12 +155,8 @@
"name": "issues_authorId_users_id_fk", "name": "issues_authorId_users_id_fk",
"tableFrom": "issues", "tableFrom": "issues",
"tableTo": "users", "tableTo": "users",
"columnsFrom": [ "columnsFrom": ["authorId"],
"authorId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "no action", "onDelete": "no action",
"onUpdate": "no action" "onUpdate": "no action"
} }
@@ -239,12 +227,8 @@
"name": "pullRequestLabels_pullRequestExternalId_pullRequests_id_fk", "name": "pullRequestLabels_pullRequestExternalId_pullRequests_id_fk",
"tableFrom": "pullRequestLabels", "tableFrom": "pullRequestLabels",
"tableTo": "pullRequests", "tableTo": "pullRequests",
"columnsFrom": [ "columnsFrom": ["pullRequestExternalId"],
"pullRequestExternalId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "no action", "onDelete": "no action",
"onUpdate": "no action" "onUpdate": "no action"
}, },
@@ -252,12 +236,8 @@
"name": "pullRequestLabels_labelId_labels_id_fk", "name": "pullRequestLabels_labelId_labels_id_fk",
"tableFrom": "pullRequestLabels", "tableFrom": "pullRequestLabels",
"tableTo": "labels", "tableTo": "labels",
"columnsFrom": [ "columnsFrom": ["labelId"],
"labelId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "no action", "onDelete": "no action",
"onUpdate": "no action" "onUpdate": "no action"
} }
@@ -330,12 +310,8 @@
"name": "pullRequests_authorId_users_id_fk", "name": "pullRequests_authorId_users_id_fk",
"tableFrom": "pullRequests", "tableFrom": "pullRequests",
"tableTo": "users", "tableTo": "users",
"columnsFrom": [ "columnsFrom": ["authorId"],
"authorId" "columnsTo": ["id"],
],
"columnsTo": [
"id"
],
"onDelete": "no action", "onDelete": "no action",
"onUpdate": "no action" "onUpdate": "no action"
} }
@@ -385,4 +361,4 @@
"schemas": {}, "schemas": {},
"tables": {} "tables": {}
} }
} }
@@ -24,4 +24,4 @@
"breakpoints": true "breakpoints": true
} }
] ]
} }
@@ -1,6 +1,6 @@
import { graphql } from '@octokit/graphql'; import { type graphql } from '@octokit/graphql';
import { Repository } from '@/github/contributors/types'; import { type Repository } from '@/github/contributors/types';
export async function fetchAssignableUsers( export async function fetchAssignableUsers(
query: typeof graphql, query: typeof graphql,
@@ -1,9 +1,9 @@
import { graphql } from '@octokit/graphql'; import { type graphql } from '@octokit/graphql';
import { import {
IssueNode, type IssueNode,
PullRequestNode, type PullRequestNode,
Repository, type Repository,
} from '@/github/contributors/types'; } from '@/github/contributors/types';
export async function fetchIssuesPRs( export async function fetchIssuesPRs(
@@ -5,7 +5,7 @@ import {
labelModel, labelModel,
userModel, userModel,
} from '@/database/model'; } from '@/database/model';
import { IssueNode } from '@/github/contributors/types'; import { type IssueNode } from '@/github/contributors/types';
export async function saveIssuesToDB( export async function saveIssuesToDB(
issues: Array<IssueNode>, issues: Array<IssueNode>,
@@ -5,7 +5,7 @@ import {
pullRequestModel, pullRequestModel,
userModel, userModel,
} from '@/database/model'; } from '@/database/model';
import { PullRequestNode } from '@/github/contributors/types'; import { type PullRequestNode } from '@/github/contributors/types';
export async function savePRsToDB( export async function savePRsToDB(
prs: Array<PullRequestNode>, prs: Array<PullRequestNode>,
@@ -1,10 +1,10 @@
import { graphql } from '@octokit/graphql'; import { type graphql } from '@octokit/graphql';
import { getLatestUpdate } from '@/github/contributors/get-latest-update'; import { getLatestUpdate } from '@/github/contributors/get-latest-update';
import { import {
IssueNode, type IssueNode,
PullRequestNode, type PullRequestNode,
SearchIssuesPRsQuery, type SearchIssuesPRsQuery,
} from '@/github/contributors/types'; } from '@/github/contributors/types';
export async function searchIssuesPRs( export async function searchIssuesPRs(
@@ -4,7 +4,10 @@ import { fetchAssignableUsers } from '@/github/contributors/fetch-assignable-use
import { saveIssuesToDB } from '@/github/contributors/save-issues-to-db'; import { saveIssuesToDB } from '@/github/contributors/save-issues-to-db';
import { savePRsToDB } from '@/github/contributors/save-prs-to-db'; import { savePRsToDB } from '@/github/contributors/save-prs-to-db';
import { searchIssuesPRs } from '@/github/contributors/search-issues-prs'; import { searchIssuesPRs } from '@/github/contributors/search-issues-prs';
import { IssueNode, PullRequestNode } from '@/github/contributors/types'; import {
type IssueNode,
type PullRequestNode,
} from '@/github/contributors/types';
import { fetchAndSaveGithubReleases } from '@/github/github-releases/fetch-and-save-github-releases'; import { fetchAndSaveGithubReleases } from '@/github/github-releases/fetch-and-save-github-releases';
import { fetchAndSaveGithubStars } from '@/github/github-stars/fetch-and-save-github-stars'; import { fetchAndSaveGithubStars } from '@/github/github-stars/fetch-and-save-github-stars';
@@ -5,7 +5,10 @@ import { fetchAssignableUsers } from '@/github/contributors/fetch-assignable-use
import { fetchIssuesPRs } from '@/github/contributors/fetch-issues-prs'; import { fetchIssuesPRs } from '@/github/contributors/fetch-issues-prs';
import { saveIssuesToDB } from '@/github/contributors/save-issues-to-db'; import { saveIssuesToDB } from '@/github/contributors/save-issues-to-db';
import { savePRsToDB } from '@/github/contributors/save-prs-to-db'; import { savePRsToDB } from '@/github/contributors/save-prs-to-db';
import { IssueNode, PullRequestNode } from '@/github/contributors/types'; import {
type IssueNode,
type PullRequestNode,
} from '@/github/contributors/types';
import { fetchAndSaveGithubReleases } from '@/github/github-releases/fetch-and-save-github-releases'; import { fetchAndSaveGithubReleases } from '@/github/github-releases/fetch-and-save-github-releases';
import { fetchAndSaveGithubStars } from '@/github/github-stars/fetch-and-save-github-stars'; import { fetchAndSaveGithubStars } from '@/github/github-stars/fetch-and-save-github-stars';
@@ -1,8 +1,8 @@
import { graphql } from '@octokit/graphql'; import { type graphql } from '@octokit/graphql';
import { insertMany } from '@/database/database'; import { insertMany } from '@/database/database';
import { githubReleasesModel } from '@/database/model'; import { githubReleasesModel } from '@/database/model';
import { Repository } from '@/github/contributors/types'; import { type Repository } from '@/github/contributors/types';
export const fetchAndSaveGithubReleases = async ( export const fetchAndSaveGithubReleases = async (
query: typeof graphql, query: typeof graphql,
@@ -1,8 +1,8 @@
import { graphql } from '@octokit/graphql'; import { type graphql } from '@octokit/graphql';
import { insertMany } from '@/database/database'; import { insertMany } from '@/database/database';
import { githubStarsModel } from '@/database/model'; import { githubStarsModel } from '@/database/model';
import { Repository } from '@/github/contributors/types'; import { type Repository } from '@/github/contributors/types';
export const fetchAndSaveGithubStars = async ( export const fetchAndSaveGithubStars = async (
query: typeof graphql, query: typeof graphql,
@@ -1,4 +1,4 @@
import { DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles'; import { type DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles';
export const constructSections = ( export const constructSections = (
docsArticleCards: DocsArticlesProps[], docsArticleCards: DocsArticlesProps[],
@@ -1,4 +1,4 @@
import { DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles'; import { type DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles';
export const filterDocsIndex = ( export const filterDocsIndex = (
docsIndex: DocsArticlesProps[], docsIndex: DocsArticlesProps[],
@@ -1,4 +1,4 @@
import { DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles'; import { type DocsArticlesProps } from '@/content/user-guide/constants/getDocsArticles';
export const getCardPath = ( export const getCardPath = (
card: DocsArticlesProps, card: DocsArticlesProps,
@@ -2,8 +2,8 @@ import {
Children, Children,
cloneElement, cloneElement,
isValidElement, isValidElement,
ReactElement, type ReactElement,
ReactNode, type ReactNode,
} from 'react'; } from 'react';
export const wrapHeadingsWithAnchor = (children: ReactNode): ReactNode => { export const wrapHeadingsWithAnchor = (children: ReactNode): ReactNode => {
+3538 -554
View File
File diff suppressed because it is too large Load Diff