mirror of
https://github.com/discordeno/discordeno.git
synced 2026-09-17 08:47:22 +00:00
chore: Migrate ESLint and prettier to Biome (#3634)
* Migrate eslint and prettier to biomejs This does NOT include examples/bigbot as it has its own formatter * Update to biome 1.8.0 * Readd dotenv dev dependency to rest During a merge it got lost
This commit is contained in:
@@ -1,29 +0,0 @@
|
||||
root: true
|
||||
env:
|
||||
browser: true
|
||||
es2021: true
|
||||
extends:
|
||||
- standard-with-typescript
|
||||
- plugin:react/recommended
|
||||
- plugin:react/jsx-runtime
|
||||
- plugin:prettier/recommended
|
||||
overrides: []
|
||||
parserOptions:
|
||||
ecmaVersion: latest
|
||||
sourceType: module
|
||||
project: ['./tsconfig.json']
|
||||
ignorePatterns:
|
||||
- .docusaurus
|
||||
- .yarn
|
||||
- build
|
||||
- node_modules
|
||||
- api_reference
|
||||
settings:
|
||||
react:
|
||||
version: 18.2.0
|
||||
plugins:
|
||||
- react
|
||||
rules:
|
||||
'@typescript-eslint/prefer-nullish-coalescing': off
|
||||
'@typescript-eslint/strict-boolean-expressions': off
|
||||
'@typescript-eslint/explicit-function-return-type': off
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"arrowParens": "avoid"
|
||||
}
|
||||
@@ -83,7 +83,6 @@ To manage the multiple packages we use a combination of yarn workspaces and turb
|
||||
|
||||
The workspaces are setup for all the folders inside `packages`. A few of the package are for the configuration of this repository, such as:
|
||||
|
||||
- `eslint-config-discordeno` - Configures eslint (with the prettier plugin) for the entire turborepo project
|
||||
- `tsconfig` - Configures the base `tsconfig.json` for every package inside the turborepo project
|
||||
|
||||
Other node projects outside `packages` are not managed by turborepo and they require their own setup, an example is the website in `website/` that requires you to install its dependencies manually outside from the main dependencies that are used with the packages.
|
||||
@@ -97,9 +96,7 @@ The project is setup to have Husky to install after you run `yarn` in the root f
|
||||
|
||||
lint-staged is configured in the `/package.json` file and will run
|
||||
|
||||
- Prettier for any changes you make to a source file, markdown file, html file or css file
|
||||
- Eslint with the "normal" configuration resolved based on `eslint-config-discordeno` for every file (outside `website/`)
|
||||
- Eslint with the configuration for the website for any source file you edit in the `website/` directory
|
||||
- [Biome](https://biomejs.dev) to format and lint the code
|
||||
|
||||
There will run automatically when `git` performs one of those actions (merge/commit), this might however slow down commit time as it requires some time to run `list-staged`
|
||||
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
// Note: type annotations allow type checking and IDEs autocompletion
|
||||
|
||||
import type { Options as PluginContentDocs } from '@docusaurus/plugin-content-docs'
|
||||
import type {
|
||||
Options as PresetClassicOptions,
|
||||
ThemeConfig,
|
||||
} from '@docusaurus/preset-classic'
|
||||
import type { Options as PresetClassicOptions, ThemeConfig } from '@docusaurus/preset-classic'
|
||||
import type { Config } from '@docusaurus/types'
|
||||
import { themes } from 'prism-react-renderer'
|
||||
|
||||
@@ -27,7 +24,7 @@ const config: Config = {
|
||||
trailingSlash: false,
|
||||
|
||||
webpack: {
|
||||
jsLoader: isServer => ({
|
||||
jsLoader: (isServer) => ({
|
||||
loader: require.resolve('esbuild-loader'),
|
||||
options: {
|
||||
loader: 'tsx',
|
||||
@@ -57,8 +54,7 @@ const config: Config = {
|
||||
sidebarPath: require.resolve('./sidebars.ts'),
|
||||
// Please change this to your repo.
|
||||
// Remove this to remove the "edit this page" links.
|
||||
editUrl:
|
||||
'https://github.com/discordeno/discordeno/tree/main/website/',
|
||||
editUrl: 'https://github.com/discordeno/discordeno/tree/main/website/',
|
||||
},
|
||||
blog: {
|
||||
showReadingTime: true,
|
||||
|
||||
+5
-22
@@ -13,8 +13,8 @@
|
||||
"write-translations": "docusaurus write-translations",
|
||||
"write-heading-ids": "docusaurus write-heading-ids",
|
||||
"typecheck": "tsc",
|
||||
"lint": "eslint . --ext js,ts,tsx",
|
||||
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,md,mdx}\"",
|
||||
"lint": "biome lint --write",
|
||||
"format": "biome format --write",
|
||||
"setup-dd": ""
|
||||
},
|
||||
"dependencies": {
|
||||
@@ -33,37 +33,20 @@
|
||||
"styled-components": "^6.1.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "^1.7.3",
|
||||
"@docusaurus/module-type-aliases": "3.0.1",
|
||||
"@docusaurus/tsconfig": "3.0.1",
|
||||
"@docusaurus/types": "3.0.1",
|
||||
"@types/react": "^18.2.47",
|
||||
"@typescript-eslint/eslint-plugin": "^6.18.0",
|
||||
"@typescript-eslint/parser": "^6.18.0",
|
||||
"esbuild": "^0.19.11",
|
||||
"esbuild-loader": "^4.0.2",
|
||||
"eslint": "^8.56.0",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-config-standard-with-typescript": "^43.0.0",
|
||||
"eslint-plugin-import": "^2.29.1",
|
||||
"eslint-plugin-n": "^16.6.1",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"eslint-plugin-react": "^7.33.2",
|
||||
"prettier": "^3.1.1",
|
||||
"terser-webpack-plugin": "^5.3.10",
|
||||
"typescript": "5.3.3",
|
||||
"webpack": "^5.89.0"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
">0.5%",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
],
|
||||
"development": [
|
||||
"last 1 chrome version",
|
||||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
]
|
||||
"production": [">0.5%", "not dead", "not op_mini all"],
|
||||
"development": ["last 1 chrome version", "last 1 firefox version", "last 1 safari version"]
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0"
|
||||
|
||||
@@ -1,28 +1,8 @@
|
||||
import {
|
||||
CategoryScale,
|
||||
Chart as ChartJS,
|
||||
Legend,
|
||||
LinearScale,
|
||||
LineController,
|
||||
LineElement,
|
||||
PointElement,
|
||||
Title,
|
||||
Tooltip,
|
||||
} from 'chart.js'
|
||||
import { CategoryScale, Chart as ChartJS, Legend, LineController, LineElement, LinearScale, PointElement, Title, Tooltip } from 'chart.js'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { Chart } from 'react-chartjs-2'
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
LineController,
|
||||
LinearScale,
|
||||
PointElement,
|
||||
LineElement,
|
||||
Title,
|
||||
Tooltip,
|
||||
Legend,
|
||||
)
|
||||
ChartJS.register(CategoryScale, LineController, LinearScale, PointElement, LineElement, Title, Tooltip, Legend)
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
||||
const BenchmarkResultChart = ({
|
||||
name,
|
||||
dataset,
|
||||
@@ -59,11 +39,11 @@ const BenchmarkResultChart = ({
|
||||
}>
|
||||
}) => {
|
||||
const data = {
|
||||
labels: dataset.map(d => d.commit.id.slice(0, 7)),
|
||||
labels: dataset.map((d) => d.commit.id.slice(0, 7)),
|
||||
datasets: [
|
||||
{
|
||||
label: name,
|
||||
data: dataset.map(d => d.bench.value),
|
||||
data: dataset.map((d) => d.bench.value),
|
||||
borderColor: '#ff3838',
|
||||
backgroundColor: '#ff383860', // Add alpha for #rrggbbaa
|
||||
},
|
||||
@@ -94,20 +74,12 @@ const BenchmarkResultChart = ({
|
||||
plugins: {
|
||||
tooltip: {
|
||||
callbacks: {
|
||||
afterTitle: items => {
|
||||
afterTitle: (items) => {
|
||||
const index = items[0].dataIndex
|
||||
const data = dataset[index]
|
||||
return (
|
||||
'\n' +
|
||||
data.commit.message +
|
||||
'\n\n' +
|
||||
data.commit.timestamp +
|
||||
' committed by @' +
|
||||
data.commit.author.username +
|
||||
'\n'
|
||||
)
|
||||
return '\n' + data.commit.message + '\n\n' + data.commit.timestamp + ' committed by @' + data.commit.author.username + '\n'
|
||||
},
|
||||
label: item => {
|
||||
label: (item) => {
|
||||
let label = item.formattedValue
|
||||
const { range, unit } = dataset[item.datasetIndex].bench
|
||||
label += ` ${unit}`
|
||||
@@ -116,7 +88,7 @@ const BenchmarkResultChart = ({
|
||||
}
|
||||
return label
|
||||
},
|
||||
afterLabel: item => {
|
||||
afterLabel: (item) => {
|
||||
const { extra } = dataset[item.datasetIndex].bench
|
||||
return extra ? `\n${extra}` : ''
|
||||
},
|
||||
@@ -145,20 +117,13 @@ export default function BenchmarkResultCharts(): JSX.Element {
|
||||
void (async () => {
|
||||
setData(
|
||||
JSON.parse(
|
||||
(
|
||||
await (
|
||||
await fetch(
|
||||
'https://raw.githubusercontent.com/discordeno/discordeno/benchies/benchmarksResult/data.js',
|
||||
)
|
||||
).text()
|
||||
).slice(24),
|
||||
(await (await fetch('https://raw.githubusercontent.com/discordeno/discordeno/benchies/benchmarksResult/data.js')).text()).slice(24),
|
||||
) as { entries: { Benchmark: [] } },
|
||||
)
|
||||
})()
|
||||
}
|
||||
}, [])
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
||||
function collectBenchesPerTestCase(entries) {
|
||||
const dataMap = new Map()
|
||||
for (const entry of entries) {
|
||||
@@ -179,15 +144,8 @@ export default function BenchmarkResultCharts(): JSX.Element {
|
||||
return (
|
||||
<div style={{ minHeight: '100vh' }}>
|
||||
{data ? (
|
||||
Array.from(
|
||||
collectBenchesPerTestCase(data.entries.Benchmark),
|
||||
([key, value]) => ({ benchName: key, benches: value }),
|
||||
).map((bench, index) => (
|
||||
<BenchmarkResultChart
|
||||
key={index}
|
||||
name={bench.benchName}
|
||||
dataset={bench.benches}
|
||||
/>
|
||||
Array.from(collectBenchesPerTestCase(data.entries.Benchmark), ([key, value]) => ({ benchName: key, benches: value })).map((bench, index) => (
|
||||
<BenchmarkResultChart key={index} name={bench.benchName} dataset={bench.benches} />
|
||||
))
|
||||
) : (
|
||||
<></>
|
||||
|
||||
@@ -1,14 +1,5 @@
|
||||
import { useEffect, useState } from 'react'
|
||||
import ReactFlow, {
|
||||
Background,
|
||||
Controls,
|
||||
Handle,
|
||||
Position,
|
||||
useEdgesState,
|
||||
useNodesState,
|
||||
type Edge,
|
||||
type Node,
|
||||
} from 'reactflow'
|
||||
import ReactFlow, { Background, Controls, Handle, Position, useEdgesState, useNodesState, type Edge, type Node } from 'reactflow'
|
||||
import 'reactflow/dist/style.css'
|
||||
|
||||
export const multiplier = 225
|
||||
@@ -41,9 +32,7 @@ export default function BaseFlowChart({
|
||||
}
|
||||
}
|
||||
|
||||
const [windowDimensions, setWindowDimensions] = useState(
|
||||
getWindowDimensions(),
|
||||
)
|
||||
const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions())
|
||||
|
||||
useEffect(() => {
|
||||
function handleResize() {
|
||||
@@ -67,11 +56,7 @@ export default function BaseFlowChart({
|
||||
windowDimensions.width >= 997
|
||||
? `${
|
||||
(100 *
|
||||
((windowDimensions.width -
|
||||
300 -
|
||||
(windowDimensions.width >= 1620
|
||||
? (windowDimensions.width - 1620) * 0.5
|
||||
: 0)) /
|
||||
((windowDimensions.width - 300 - (windowDimensions.width >= 1620 ? (windowDimensions.width - 1620) * 0.5 : 0)) /
|
||||
windowDimensions.width) -
|
||||
2) *
|
||||
widthMultiplier
|
||||
@@ -105,7 +90,7 @@ export default function BaseFlowChart({
|
||||
/>
|
||||
</div>
|
||||
),
|
||||
baseLineNodeText: n => (
|
||||
baseLineNodeText: (n) => (
|
||||
<div
|
||||
style={{
|
||||
textAlign: 'center',
|
||||
|
||||
@@ -158,7 +158,5 @@ const initialEdges: Edge[] = [
|
||||
]
|
||||
|
||||
export default function FlowChart() {
|
||||
return (
|
||||
<BaseFlowChart initialNodes={initialNodes} initialEdges={initialEdges} />
|
||||
)
|
||||
return <BaseFlowChart initialNodes={initialNodes} initialEdges={initialEdges} />
|
||||
}
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
import { type Edge, type Node, Position } from 'reactflow'
|
||||
import 'reactflow/dist/style.css'
|
||||
import BaseFlowChart, {
|
||||
defaultGroupOptions,
|
||||
defaultNodeOptions,
|
||||
multiplier,
|
||||
} from './BaseFlowChart'
|
||||
import BaseFlowChart, { defaultGroupOptions, defaultNodeOptions, multiplier } from './BaseFlowChart'
|
||||
|
||||
const initialNodes: Node[] = [
|
||||
{
|
||||
@@ -303,7 +299,5 @@ const initialEdges: Edge[] = [
|
||||
]
|
||||
|
||||
export default function FlowChart2() {
|
||||
return (
|
||||
<BaseFlowChart initialNodes={initialNodes} initialEdges={initialEdges} />
|
||||
)
|
||||
return <BaseFlowChart initialNodes={initialNodes} initialEdges={initialEdges} />
|
||||
}
|
||||
|
||||
@@ -1,22 +1,8 @@
|
||||
import type React from 'react'
|
||||
import { useEffect, useState } from 'react'
|
||||
import ReactFlow, {
|
||||
Background,
|
||||
Controls,
|
||||
Handle,
|
||||
Position,
|
||||
useEdgesState,
|
||||
useNodesState,
|
||||
type Edge,
|
||||
type Node,
|
||||
} from 'reactflow'
|
||||
import ReactFlow, { Background, Controls, Handle, Position, useEdgesState, useNodesState, type Edge, type Node } from 'reactflow'
|
||||
import 'reactflow/dist/style.css'
|
||||
import {
|
||||
defaultNodeOptions,
|
||||
height,
|
||||
multiplier,
|
||||
widthMultiplier,
|
||||
} from './BaseFlowChart'
|
||||
import { defaultNodeOptions, height, multiplier, widthMultiplier } from './BaseFlowChart'
|
||||
|
||||
const handlers: Record<
|
||||
string,
|
||||
@@ -42,27 +28,15 @@ const handlers: Record<
|
||||
event: 'events.channelUpdate',
|
||||
},
|
||||
handleStageInstanceCreate: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake'],
|
||||
event: 'events.stageInstanceCreate',
|
||||
},
|
||||
handleStageInstanceDelete: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake'],
|
||||
event: 'events.stageInstanceDelete',
|
||||
},
|
||||
handleStageInstanceUpdate: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake'],
|
||||
event: 'events.stageInstanceUpdate',
|
||||
},
|
||||
handleThreadCreate: {
|
||||
@@ -74,22 +48,11 @@ const handlers: Record<
|
||||
event: 'events.threadDelete',
|
||||
},
|
||||
handleThreadListSync: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.channel',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.channel', 'transformers.snowflake', 'transformers.snowflake'],
|
||||
event: undefined,
|
||||
},
|
||||
handleThreadMembersUpdate: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.threadMember',
|
||||
'transformers.snowflake',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.threadMember', 'transformers.snowflake'],
|
||||
event: 'events.threadMembersUpdate',
|
||||
},
|
||||
handleThreadMemberUpdate: {
|
||||
@@ -157,19 +120,11 @@ const handlers: Record<
|
||||
event: 'events.scheduledEventUpdate',
|
||||
},
|
||||
handleGuildScheduledEventUserAdd: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake'],
|
||||
event: 'events.scheduledEventUserAdd',
|
||||
},
|
||||
handleGuildScheduledEventUserRemove: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake'],
|
||||
event: 'events.scheduledEventUserRemove',
|
||||
},
|
||||
handleIntegrationCreate: {
|
||||
@@ -177,11 +132,7 @@ const handlers: Record<
|
||||
event: 'events.integrationCreate',
|
||||
},
|
||||
handleIntegrationDelete: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake'],
|
||||
event: 'events.integrationDelete',
|
||||
},
|
||||
handleIntegrationUpdate: {
|
||||
@@ -212,11 +163,7 @@ const handlers: Record<
|
||||
event: undefined,
|
||||
},
|
||||
handleGuildMemberAdd: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.user',
|
||||
'transformers.member',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.user', 'transformers.member'],
|
||||
event: 'events.guildMemberAdd',
|
||||
},
|
||||
handleGuildMemberRemove: {
|
||||
@@ -224,11 +171,7 @@ const handlers: Record<
|
||||
event: 'events.guildMemberRemove',
|
||||
},
|
||||
handleGuildMemberUpdate: {
|
||||
transformers: [
|
||||
'transformers.user',
|
||||
'transformers.member',
|
||||
'transformers.snowflake',
|
||||
],
|
||||
transformers: ['transformers.user', 'transformers.member', 'transformers.snowflake'],
|
||||
event: 'events.guildMemberUpdate',
|
||||
},
|
||||
handleMessageCreate: {
|
||||
@@ -236,21 +179,11 @@ const handlers: Record<
|
||||
event: 'events.messageCreate',
|
||||
},
|
||||
handleMessageDelete: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake'],
|
||||
event: 'events.messageDelete',
|
||||
},
|
||||
handleMessageDeleteBulk: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake'],
|
||||
event: 'events.messageDeleteBulk',
|
||||
},
|
||||
handleMessageReactionAdd: {
|
||||
@@ -266,30 +199,15 @@ const handlers: Record<
|
||||
event: 'events.reactionAdd',
|
||||
},
|
||||
handleMessageReactionRemove: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.emoji',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake', 'transformers.emoji'],
|
||||
event: 'events.reactionRemove',
|
||||
},
|
||||
handleMessageReactionRemoveAll: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake'],
|
||||
event: 'events.reactionRemoveAll',
|
||||
},
|
||||
handleMessageReactionRemoveEmoji: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.emoji',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake', 'transformers.emoji'],
|
||||
event: 'events.reactionRemoveEmoji',
|
||||
},
|
||||
handleMessageUpdate: {
|
||||
@@ -301,22 +219,11 @@ const handlers: Record<
|
||||
event: 'events.presenceUpdate',
|
||||
},
|
||||
handleReady: {
|
||||
transformers: [
|
||||
'transformers.user',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
],
|
||||
transformers: ['transformers.user', 'transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake'],
|
||||
event: 'events.ready',
|
||||
},
|
||||
handleTypingStart: {
|
||||
transformers: [
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.snowflake',
|
||||
'transformers.member',
|
||||
],
|
||||
transformers: ['transformers.snowflake', 'transformers.snowflake', 'transformers.snowflake', 'transformers.member'],
|
||||
event: 'events.typingStart',
|
||||
},
|
||||
handleUserUpdate: {
|
||||
@@ -350,7 +257,7 @@ const handlers: Record<
|
||||
}
|
||||
|
||||
export default function FlowChart({
|
||||
handlerFilter = (handler: string) => true,
|
||||
handlerFilter = (_handler: string) => true,
|
||||
}: {
|
||||
handlerFilter: (handler: string) => boolean
|
||||
}) {
|
||||
@@ -362,9 +269,7 @@ export default function FlowChart({
|
||||
}
|
||||
}
|
||||
|
||||
const [windowDimensions, setWindowDimensions] = useState(
|
||||
getWindowDimensions(),
|
||||
)
|
||||
const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions())
|
||||
|
||||
useEffect(() => {
|
||||
function handleResize() {
|
||||
@@ -472,18 +377,12 @@ export default function FlowChart({
|
||||
},
|
||||
]
|
||||
|
||||
for (const [index, handler] of Object.keys(handlers)
|
||||
.filter(handlerFilter)
|
||||
.entries()) {
|
||||
for (const [index, handler] of Object.keys(handlers).filter(handlerFilter).entries()) {
|
||||
initialNodes.push({
|
||||
id: handler,
|
||||
position: {
|
||||
x: 2 * multiplier,
|
||||
y:
|
||||
index * (height + 10) -
|
||||
Object.keys(handlers).filter(handlerFilter).length *
|
||||
((height + 10) / 2) +
|
||||
height / 2,
|
||||
y: index * (height + 10) - Object.keys(handlers).filter(handlerFilter).length * ((height + 10) / 2) + height / 2,
|
||||
},
|
||||
data: { label: handler.slice(6) },
|
||||
...defaultNodeOptions,
|
||||
@@ -493,10 +392,7 @@ export default function FlowChart({
|
||||
source: 'baseNode-handleDiscordPayload',
|
||||
target: handler,
|
||||
})
|
||||
if (
|
||||
!events.find(e => e === handlers[handler].event) &&
|
||||
handlers[handler].event
|
||||
) {
|
||||
if (!events.find((e) => e === handlers[handler].event) && handlers[handler].event) {
|
||||
events.push(handlers[handler].event)
|
||||
initialEdges.push({
|
||||
id: `${handlers[handler].event}-yourCode`,
|
||||
@@ -505,24 +401,15 @@ export default function FlowChart({
|
||||
})
|
||||
}
|
||||
for (const transformer of handlers[handler].transformers) {
|
||||
if (!transformers.find(t => t === transformer) && transformer)
|
||||
transformers.push(transformer)
|
||||
if (
|
||||
!initialEdges.find(edge => edge.id === `${handler}-${transformer}`) &&
|
||||
transformer
|
||||
) {
|
||||
if (!transformers.find((t) => t === transformer) && transformer) transformers.push(transformer)
|
||||
if (!initialEdges.find((edge) => edge.id === `${handler}-${transformer}`) && transformer) {
|
||||
initialEdges.push({
|
||||
id: `${handler}-${transformer}`,
|
||||
source: handler,
|
||||
target: transformer,
|
||||
})
|
||||
}
|
||||
if (
|
||||
!initialEdges.find(
|
||||
edge => edge.id === `${transformer}-${handlers[handler].event}`,
|
||||
) &&
|
||||
handlers[handler].event
|
||||
) {
|
||||
if (!initialEdges.find((edge) => edge.id === `${transformer}-${handlers[handler].event}`) && handlers[handler].event) {
|
||||
initialEdges.push({
|
||||
id: `${transformer}-${handlers[handler].event}`,
|
||||
source: transformer,
|
||||
@@ -537,10 +424,7 @@ export default function FlowChart({
|
||||
id: transformer,
|
||||
position: {
|
||||
x: 3 * multiplier,
|
||||
y:
|
||||
index * (height + 10) -
|
||||
transformers.length * ((height + 10) / 2) +
|
||||
height / 2,
|
||||
y: index * (height + 10) - transformers.length * ((height + 10) / 2) + height / 2,
|
||||
},
|
||||
data: { label: transformer.slice(13) },
|
||||
...defaultNodeOptions,
|
||||
@@ -552,10 +436,7 @@ export default function FlowChart({
|
||||
id: event,
|
||||
position: {
|
||||
x: 4 * multiplier,
|
||||
y:
|
||||
index * (height + 10) -
|
||||
events.length * ((height + 10) / 2) +
|
||||
height / 2,
|
||||
y: index * (height + 10) - events.length * ((height + 10) / 2) + height / 2,
|
||||
},
|
||||
data: { label: event.slice(7) },
|
||||
...defaultNodeOptions,
|
||||
@@ -568,17 +449,11 @@ export default function FlowChart({
|
||||
type: 'group',
|
||||
position: {
|
||||
x: 1.925 * multiplier,
|
||||
y:
|
||||
-Object.keys(handlers).filter(handlerFilter).length *
|
||||
((height + 10) / 2) -
|
||||
45,
|
||||
y: -Object.keys(handlers).filter(handlerFilter).length * ((height + 10) / 2) - 45,
|
||||
},
|
||||
data: { label: '' },
|
||||
style: {
|
||||
height: `${
|
||||
Object.keys(handlers).filter(handlerFilter).length * (height + 10) +
|
||||
75
|
||||
}px`,
|
||||
height: `${Object.keys(handlers).filter(handlerFilter).length * (height + 10) + 75}px`,
|
||||
width: `${multiplier * 0.9}px`,
|
||||
borderColor: 'rgba(0,0,0,0.25)',
|
||||
},
|
||||
@@ -589,10 +464,7 @@ export default function FlowChart({
|
||||
type: 'baseLineNodeText',
|
||||
position: {
|
||||
x: 2 * multiplier,
|
||||
y:
|
||||
-Object.keys(handlers).filter(handlerFilter).length *
|
||||
((height + 10) / 2) -
|
||||
(height + 10) / 2,
|
||||
y: -Object.keys(handlers).filter(handlerFilter).length * ((height + 10) / 2) - (height + 10) / 2,
|
||||
},
|
||||
data: { label: 'Handlers' },
|
||||
draggable: false,
|
||||
@@ -654,14 +526,10 @@ export default function FlowChart({
|
||||
const [, setHandlerIndex] = useState(0)
|
||||
const [userClick, setUserClick] = useState(false)
|
||||
|
||||
const nodeMouseHandler = (
|
||||
_: React.MouseEvent,
|
||||
node: Node,
|
||||
userTrigger = true,
|
||||
) => {
|
||||
const nodeMouseHandler = (_: React.MouseEvent, node: Node, userTrigger = true) => {
|
||||
if (userTrigger) setUserClick(true)
|
||||
if (node.id.split('-')[0] === 'baseNode') {
|
||||
edges.forEach(e => {
|
||||
edges.forEach((e) => {
|
||||
if (e.id.startsWith('baseLine')) return
|
||||
e.animated = true
|
||||
e.style = { stroke: 'blue' }
|
||||
@@ -669,46 +537,32 @@ export default function FlowChart({
|
||||
setEdges([...edges])
|
||||
return
|
||||
}
|
||||
if (Object.keys(handlers).find(h => handlers[h].event === node.id)) {
|
||||
const handlerName = Object.keys(handlers).find(
|
||||
h => handlers[h].event === node.id,
|
||||
)
|
||||
if (Object.keys(handlers).find((h) => handlers[h].event === node.id)) {
|
||||
const handlerName = Object.keys(handlers).find((h) => handlers[h].event === node.id)
|
||||
const handler = handlers[handlerName]
|
||||
edges.forEach(e => {
|
||||
edges.forEach((e) => {
|
||||
if (e.id.startsWith('baseLine')) return
|
||||
if (e.id.split('-')[0] === 'baseEdge') {
|
||||
e.animated = true
|
||||
e.style = { stroke: 'blue' }
|
||||
return
|
||||
}
|
||||
if (
|
||||
e.id.split('-')[0] === 'handleDiscordPayload' &&
|
||||
e.id.split('-')[1] === handlerName
|
||||
) {
|
||||
if (e.id.split('-')[0] === 'handleDiscordPayload' && e.id.split('-')[1] === handlerName) {
|
||||
e.animated = true
|
||||
e.style = { stroke: 'blue' }
|
||||
return
|
||||
}
|
||||
if (
|
||||
e.id.split('-')[0] === handlerName &&
|
||||
handler.transformers.includes(e.id.split('-')[1])
|
||||
) {
|
||||
if (e.id.split('-')[0] === handlerName && handler.transformers.includes(e.id.split('-')[1])) {
|
||||
e.animated = true
|
||||
e.style = { stroke: 'blue' }
|
||||
return
|
||||
}
|
||||
if (
|
||||
handler.transformers.includes(e.id.split('-')[0]) &&
|
||||
e.id.split('-')[1] === handler.event
|
||||
) {
|
||||
if (handler.transformers.includes(e.id.split('-')[0]) && e.id.split('-')[1] === handler.event) {
|
||||
e.animated = true
|
||||
e.style = { stroke: 'blue' }
|
||||
return
|
||||
}
|
||||
if (
|
||||
e.id.split('-')[0] === handler.event &&
|
||||
e.id.split('-')[1] === 'yourCode'
|
||||
) {
|
||||
if (e.id.split('-')[0] === handler.event && e.id.split('-')[1] === 'yourCode') {
|
||||
e.animated = true
|
||||
e.style = { stroke: 'blue' }
|
||||
return
|
||||
@@ -719,12 +573,8 @@ export default function FlowChart({
|
||||
setEdges([...edges])
|
||||
return
|
||||
}
|
||||
if (
|
||||
Object.keys(handlers).find(h =>
|
||||
handlers[h].transformers.includes(node.id),
|
||||
)
|
||||
) {
|
||||
edges.forEach(e => {
|
||||
if (Object.keys(handlers).find((h) => handlers[h].transformers.includes(node.id))) {
|
||||
edges.forEach((e) => {
|
||||
if (e.id.startsWith('baseLine')) return
|
||||
if (e.id.split('-')[0] === 'baseEdge') {
|
||||
e.animated = true
|
||||
@@ -734,7 +584,7 @@ export default function FlowChart({
|
||||
if (
|
||||
e.id.split('-')[0] === 'handleDiscordPayload' &&
|
||||
Object.keys(handlers)
|
||||
.filter(h => handlers[h].transformers.includes(node.id))
|
||||
.filter((h) => handlers[h].transformers.includes(node.id))
|
||||
.includes(e.id.split('-')[1])
|
||||
) {
|
||||
e.animated = true
|
||||
@@ -743,7 +593,7 @@ export default function FlowChart({
|
||||
}
|
||||
if (
|
||||
Object.keys(handlers)
|
||||
.filter(h => handlers[h].transformers.includes(node.id))
|
||||
.filter((h) => handlers[h].transformers.includes(node.id))
|
||||
.includes(e.id.split('-')[0]) &&
|
||||
e.id.split('-')[1] === node.id
|
||||
) {
|
||||
@@ -764,33 +614,24 @@ export default function FlowChart({
|
||||
}
|
||||
if (handlers[node.id]) {
|
||||
const handler = handlers[node.id]
|
||||
edges.forEach(e => {
|
||||
edges.forEach((e) => {
|
||||
if (e.id.startsWith('baseLine')) return
|
||||
if (e.id.split('-')[0] === 'baseEdge') {
|
||||
e.animated = true
|
||||
e.style = { stroke: 'blue' }
|
||||
return
|
||||
}
|
||||
if (
|
||||
e.id.split('-')[0] === 'handleDiscordPayload' &&
|
||||
e.id.split('-')[1] === node.id
|
||||
) {
|
||||
if (e.id.split('-')[0] === 'handleDiscordPayload' && e.id.split('-')[1] === node.id) {
|
||||
e.animated = true
|
||||
e.style = { stroke: 'blue' }
|
||||
return
|
||||
}
|
||||
if (
|
||||
e.id.split('-')[0] === node.id &&
|
||||
handler.transformers.includes(e.id.split('-')[1])
|
||||
) {
|
||||
if (e.id.split('-')[0] === node.id && handler.transformers.includes(e.id.split('-')[1])) {
|
||||
e.animated = true
|
||||
e.style = { stroke: 'blue' }
|
||||
return
|
||||
}
|
||||
if (
|
||||
handler.transformers.includes(e.id.split('-')[0]) &&
|
||||
e.id.split('-')[1] === handler.event
|
||||
) {
|
||||
if (handler.transformers.includes(e.id.split('-')[0]) && e.id.split('-')[1] === handler.event) {
|
||||
e.animated = true
|
||||
e.style = { stroke: 'blue' }
|
||||
return
|
||||
@@ -806,7 +647,7 @@ export default function FlowChart({
|
||||
setEdges([...edges])
|
||||
return
|
||||
}
|
||||
edges.forEach(e => {
|
||||
edges.forEach((e) => {
|
||||
if (e.id.startsWith('baseLine')) return
|
||||
e.animated = false
|
||||
e.style = {}
|
||||
@@ -816,10 +657,7 @@ export default function FlowChart({
|
||||
|
||||
useEffect(() => {
|
||||
const interval = setInterval(() => {
|
||||
const randomIndex = Math.round(
|
||||
(Object.keys(handlers).filter(handlerFilter).length - 1) *
|
||||
Math.random(),
|
||||
)
|
||||
const randomIndex = Math.round((Object.keys(handlers).filter(handlerFilter).length - 1) * Math.random())
|
||||
if (!userClick) {
|
||||
nodeMouseHandler(
|
||||
undefined,
|
||||
@@ -857,11 +695,7 @@ export default function FlowChart({
|
||||
windowDimensions.width >= 997
|
||||
? `${
|
||||
(100 *
|
||||
((windowDimensions.width -
|
||||
300 -
|
||||
(windowDimensions.width >= 1620
|
||||
? (windowDimensions.width - 1620) * 0.5
|
||||
: 0)) /
|
||||
((windowDimensions.width - 300 - (windowDimensions.width >= 1620 ? (windowDimensions.width - 1620) * 0.5 : 0)) /
|
||||
windowDimensions.width) -
|
||||
2) *
|
||||
widthMultiplier
|
||||
@@ -876,7 +710,7 @@ export default function FlowChart({
|
||||
defaultEdgeOptions={{ focusable: false }}
|
||||
onNodeDoubleClick={nodeMouseHandler}
|
||||
onNodeClick={nodeMouseHandler}
|
||||
onClick={e => {
|
||||
onClick={(e) => {
|
||||
const target = e.target as HTMLDivElement
|
||||
|
||||
if (target.className === 'react-flow__pane') {
|
||||
@@ -908,7 +742,7 @@ export default function FlowChart({
|
||||
/>
|
||||
</div>
|
||||
),
|
||||
baseLineNodeText: n => (
|
||||
baseLineNodeText: (n) => (
|
||||
<div
|
||||
style={{
|
||||
textAlign: 'center',
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
import ReactFlow, {
|
||||
Background,
|
||||
Controls,
|
||||
type Edge,
|
||||
type Node,
|
||||
Position,
|
||||
} from 'reactflow'
|
||||
import ReactFlow, { Background, Controls, type Edge, type Node, Position } from 'reactflow'
|
||||
import 'reactflow/dist/style.css'
|
||||
|
||||
export const defaultNodeOptions = {
|
||||
@@ -15,7 +9,7 @@ export const defaultNodeOptions = {
|
||||
}
|
||||
|
||||
const genServer = (x: number, id: number) => {
|
||||
const server: Array<Node<any, string>> = [
|
||||
const server: Node<any, string>[] = [
|
||||
{
|
||||
id: `s${id + 1}`,
|
||||
data: { label: `Server ${id + 1}` },
|
||||
@@ -57,9 +51,7 @@ const genServer = (x: number, id: number) => {
|
||||
{
|
||||
id: `w${id * 50 + (i === 3 ? 49 : i) + 1}s`,
|
||||
data: {
|
||||
label: `Shard ${id * 500 + (i === 3 ? 49 : i) * 10}-${
|
||||
id * 500 + (i === 3 ? 49 : i) * 10 + 9
|
||||
}`,
|
||||
label: `Shard ${id * 500 + (i === 3 ? 49 : i) * 10}-${id * 500 + (i === 3 ? 49 : i) * 10 + 9}`,
|
||||
},
|
||||
position: { x: x - 112.5 + 75 * i, y: 300 },
|
||||
type: 'output',
|
||||
@@ -67,9 +59,7 @@ const genServer = (x: number, id: number) => {
|
||||
...{
|
||||
style: {
|
||||
...defaultNodeOptions.style,
|
||||
...(id === 1 || (id === 0 && i === 3)
|
||||
? { padding: '5px 10px' }
|
||||
: { padding: `5px 5px` }),
|
||||
...(id === 1 || (id === 0 && i === 3) ? { padding: '5px 10px' } : { padding: `5px 5px` }),
|
||||
...(id === 0 && i !== 3 ? { padding: '5px 15px' } : {}),
|
||||
},
|
||||
},
|
||||
@@ -101,7 +91,7 @@ const nodes = [
|
||||
},
|
||||
]
|
||||
|
||||
const edges: Array<Edge<any>> = [
|
||||
const edges: Edge<any>[] = [
|
||||
{ id: 'gwm-s1', source: 'gwm', target: 's1', type: 'step' },
|
||||
{ id: 'gwm-s2', source: 'gwm', target: 's2', type: 'step' },
|
||||
{ id: 'gwm-s10', source: 'gwm', target: 's10', type: 'step' },
|
||||
@@ -132,7 +122,7 @@ function Flow() {
|
||||
nodes={nodes}
|
||||
edges={edges}
|
||||
nodeTypes={{
|
||||
baseLineNodeText: n => (
|
||||
baseLineNodeText: (n) => (
|
||||
<div
|
||||
style={{
|
||||
textAlign: 'center',
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
import {
|
||||
FaqAnswer,
|
||||
FaqContainer,
|
||||
FaqQuestion,
|
||||
FaqSection,
|
||||
} from '@site/src/styling'
|
||||
import { FaqAnswer, FaqContainer, FaqQuestion, FaqSection } from '@site/src/styling'
|
||||
import { useState } from 'react'
|
||||
|
||||
const Faq = ({
|
||||
@@ -44,8 +39,7 @@ const Faq = ({
|
||||
|
||||
const questions = [
|
||||
{
|
||||
question:
|
||||
'Does Discordeno work on all JavaScript runtimes like Deno, Node.js, and Bun?',
|
||||
question: 'Does Discordeno work on all JavaScript runtimes like Deno, Node.js, and Bun?',
|
||||
answer:
|
||||
"Yes! Discordeno is designed to work on any JavaScript runtime, including Deno, Node.js, and even in the Bun environment. This means that you can use Discordeno in your project no matter where you're running your code.",
|
||||
defaultExpanded: true,
|
||||
@@ -77,12 +71,7 @@ export default function DiscordenoFAQ() {
|
||||
<div>
|
||||
<h1>Frequently Asked Questions</h1>
|
||||
{questions.map((question, index) => (
|
||||
<Faq
|
||||
key={index}
|
||||
question={question.question}
|
||||
answer={question.answer}
|
||||
defaultExpanded={question.defaultExpanded}
|
||||
/>
|
||||
<Faq key={index} question={question.question} answer={question.answer} defaultExpanded={question.defaultExpanded} />
|
||||
))}
|
||||
</div>
|
||||
</FaqSection>
|
||||
|
||||
@@ -37,10 +37,8 @@ const reviewList: IReview[] = [
|
||||
bot: {
|
||||
username: 'Ai Image Generator',
|
||||
discriminator: '8424',
|
||||
avatar:
|
||||
'https://cdn.discordapp.com/avatars/1032699319368814652/8abbc5911333d3df288ff962a2120d75.png',
|
||||
invite_url:
|
||||
'https://discord.com/oauth2/authorize?client_id=1032699319368814652&permissions=274877959232&scope=bot%20applications.commands',
|
||||
avatar: 'https://cdn.discordapp.com/avatars/1032699319368814652/8abbc5911333d3df288ff962a2120d75.png',
|
||||
invite_url: 'https://discord.com/oauth2/authorize?client_id=1032699319368814652&permissions=274877959232&scope=bot%20applications.commands',
|
||||
guild_count: 163000,
|
||||
},
|
||||
developer: {
|
||||
@@ -58,10 +56,8 @@ const reviewList: IReview[] = [
|
||||
bot: {
|
||||
username: 'Appy',
|
||||
discriminator: '0756',
|
||||
avatar:
|
||||
'https://cdn.discordapp.com/avatars/853327905357561948/b1785ce8fad6e6b6b2a7ccaba11be25e.png',
|
||||
invite_url:
|
||||
'https://discord.com/oauth2/authorize?client_id=853327905357561948&scope=bot&permissions=534925798592',
|
||||
avatar: 'https://cdn.discordapp.com/avatars/853327905357561948/b1785ce8fad6e6b6b2a7ccaba11be25e.png',
|
||||
invite_url: 'https://discord.com/oauth2/authorize?client_id=853327905357561948&scope=bot&permissions=534925798592',
|
||||
guild_count: 244000,
|
||||
},
|
||||
developer: {
|
||||
@@ -79,10 +75,8 @@ const reviewList: IReview[] = [
|
||||
bot: {
|
||||
username: 'Fibo',
|
||||
discriminator: '6503',
|
||||
avatar:
|
||||
'https://cdn.discordapp.com/avatars/735147814878969968/8b72f174c30276f4d48c1e66608df70c.webp',
|
||||
invite_url:
|
||||
'https://discord.com/api/oauth2/authorize?client_id=735147814878969968&permissions=805825744&scope=applications.commands%20bot',
|
||||
avatar: 'https://cdn.discordapp.com/avatars/735147814878969968/8b72f174c30276f4d48c1e66608df70c.webp',
|
||||
invite_url: 'https://discord.com/api/oauth2/authorize?client_id=735147814878969968&permissions=805825744&scope=applications.commands%20bot',
|
||||
guild_count: 278000,
|
||||
},
|
||||
developer: {
|
||||
@@ -101,8 +95,7 @@ const reviewList: IReview[] = [
|
||||
username: 'CactusFire',
|
||||
discriminator: '3759',
|
||||
avatar: 'https://i.imgur.com/L7zadjU.png',
|
||||
invite_url:
|
||||
'https://discord.com/oauth2/authorize?client_id=543567770579894272&permissions=8&scope=bot%20applications.commands',
|
||||
invite_url: 'https://discord.com/oauth2/authorize?client_id=543567770579894272&permissions=8&scope=bot%20applications.commands',
|
||||
guild_count: 284000,
|
||||
},
|
||||
developer: {
|
||||
@@ -129,7 +122,7 @@ export default function DiscordenoReviews() {
|
||||
.sort((a, b) => {
|
||||
return b.bot.guild_count - a.bot.guild_count
|
||||
})
|
||||
.map((review, idx) => (
|
||||
.map((review) => (
|
||||
<ReviewsElement key={review.bot.username}>
|
||||
<ReviewsHeader>
|
||||
<ReviewsLeft>
|
||||
@@ -137,56 +130,30 @@ export default function DiscordenoReviews() {
|
||||
<div>
|
||||
<span>
|
||||
<div id="username">{review.bot.username}</div>
|
||||
<div id="discriminator">
|
||||
#{review.bot.discriminator}
|
||||
</div>
|
||||
<div id="discriminator">#{review.bot.discriminator}</div>
|
||||
<div id="badge">
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="12"
|
||||
height="16"
|
||||
viewBox="0 0 12 16"
|
||||
>
|
||||
<path
|
||||
fill="#fff"
|
||||
fillRule="evenodd"
|
||||
d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"
|
||||
></path>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 0 12 16">
|
||||
<path fill="#fff" fillRule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path>
|
||||
</svg>
|
||||
Bot
|
||||
</div>
|
||||
</span>
|
||||
<div id="sub_header">
|
||||
by{' '}
|
||||
<div id="username">
|
||||
{review.developer.usernames.join(', ')}
|
||||
</div>
|
||||
by <div id="username">{review.developer.usernames.join(', ')}</div>
|
||||
</div>
|
||||
</div>
|
||||
</ReviewsLeft>
|
||||
<ReviewsRight>
|
||||
<StarContainer>
|
||||
{([1, 2, 3, 4, 5] as const).map(star => (
|
||||
<StarIcon
|
||||
key={star}
|
||||
active={star > review.stars}
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 20 20"
|
||||
aria-hidden="true"
|
||||
>
|
||||
{([1, 2, 3, 4, 5] as const).map((star) => (
|
||||
<StarIcon key={star} active={star > review.stars} xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" aria-hidden="true">
|
||||
<title>{`Star ${star}`}</title>
|
||||
<path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" />
|
||||
</StarIcon>
|
||||
))}
|
||||
</StarContainer>
|
||||
<div>
|
||||
<svg
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M12 2C9.38 2 7.25 4.13 7.25 6.75C7.25 9.32 9.26 11.4 11.88 11.49C11.96 11.48 12.04 11.48 12.1 11.49C12.12 11.49 12.13 11.49 12.15 11.49C12.16 11.49 12.16 11.49 12.17 11.49C14.73 11.4 16.74 9.32 16.75 6.75C16.75 4.13 14.62 2 12 2Z"
|
||||
fill="currentColor"
|
||||
@@ -196,28 +163,14 @@ export default function DiscordenoReviews() {
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
{String(review.bot.guild_count).replace(
|
||||
/\B(?=(\d{3})+(?!\d))/g,
|
||||
',',
|
||||
)}{' '}
|
||||
guilds
|
||||
{String(review.bot.guild_count).replace(/\B(?=(\d{3})+(?!\d))/g, ',')} guilds
|
||||
</div>
|
||||
</ReviewsRight>
|
||||
</ReviewsHeader>
|
||||
<ReviewsBox>{review.review}</ReviewsBox>
|
||||
<ReviewsOtherContainer>
|
||||
<a
|
||||
href={review.bot.invite_url}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>
|
||||
<svg
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<a href={review.bot.invite_url} target="_blank" rel="noopener noreferrer">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M12 2C6.49 2 2 6.49 2 12C2 17.51 6.49 22 12 22C17.51 22 22 17.51 22 12C22 6.49 17.51 2 12 2ZM16 12.75H12.75V16C12.75 16.41 12.41 16.75 12 16.75C11.59 16.75 11.25 16.41 11.25 16V12.75H8C7.59 12.75 7.25 12.41 7.25 12C7.25 11.59 7.59 11.25 8 11.25H11.25V8C11.25 7.59 11.59 7.25 12 7.25C12.41 7.25 12.75 7.59 12.75 8V11.25H16C16.41 11.25 16.75 11.59 16.75 12C16.75 12.41 16.41 12.75 16 12.75Z"
|
||||
fill="currentColor"
|
||||
@@ -227,13 +180,7 @@ export default function DiscordenoReviews() {
|
||||
</a>
|
||||
<div>
|
||||
<div>
|
||||
<svg
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M22 22.75H5C2.93 22.75 1.25 21.07 1.25 19V2C1.25 1.59 1.59 1.25 2 1.25C2.41 1.25 2.75 1.59 2.75 2V19C2.75 20.24 3.76 21.25 5 21.25H22C22.41 21.25 22.75 21.59 22.75 22C22.75 22.41 22.41 22.75 22 22.75Z"
|
||||
fill="currentColor"
|
||||
@@ -244,17 +191,13 @@ export default function DiscordenoReviews() {
|
||||
/>
|
||||
</svg>
|
||||
{review.memory_improvement
|
||||
? (review.memory_improvement.from / 1000)
|
||||
.toString()
|
||||
.replace(/\B(?=(\d{3})+(?!\d))/g, ',') +
|
||||
? (review.memory_improvement.from / 1000).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') +
|
||||
'GB' +
|
||||
` (${DiscordLibraries[review.previous_library]})`
|
||||
: DiscordLibraries[review.previous_library]}
|
||||
<div>→</div>
|
||||
{review.memory_improvement
|
||||
? (review.memory_improvement.to / 1000)
|
||||
.toString()
|
||||
.replace(/\B(?=(\d{3})+(?!\d))/g, ',') + 'GB'
|
||||
? (review.memory_improvement.to / 1000).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + 'GB'
|
||||
: 'Discordeno'}
|
||||
|
||||
{review.memory_improvement && (
|
||||
@@ -263,11 +206,8 @@ export default function DiscordenoReviews() {
|
||||
{' '}
|
||||
—{' '}
|
||||
<strong>
|
||||
{(
|
||||
((review.memory_improvement.from -
|
||||
review.memory_improvement.to) /
|
||||
review.memory_improvement.from) as any
|
||||
).toFixed(2) * 100}
|
||||
{(((review.memory_improvement.from - review.memory_improvement.to) / review.memory_improvement.from) as any).toFixed(2) *
|
||||
100}
|
||||
%
|
||||
</strong>
|
||||
RAM improvement
|
||||
|
||||
@@ -62,10 +62,7 @@ export default function Home(): JSX.Element {
|
||||
)
|
||||
|
||||
return (
|
||||
<Layout
|
||||
title={`Discordeno Documentation`}
|
||||
description="An in-depth guide to using the Discordeno library for Deno."
|
||||
>
|
||||
<Layout title={`Discordeno Documentation`} description="An in-depth guide to using the Discordeno library for Deno.">
|
||||
<DiscordenoHeader />
|
||||
<MainPage>
|
||||
<DiscordenoFeatures />
|
||||
|
||||
@@ -86,8 +86,7 @@ export const Button = styled.button<{
|
||||
border: transparent;
|
||||
|
||||
a {
|
||||
background: ${({ variant }) =>
|
||||
variant === 'primary' ? '#181818' : 'transparent'};
|
||||
background: ${({ variant }) => (variant === 'primary' ? '#181818' : 'transparent')};
|
||||
color: ${({ variant }) => (variant === 'primary' ? '#fff' : 'primary')};
|
||||
animation: gradient 10s ease infinite;
|
||||
-webkit-text-decoration-color: transparent;
|
||||
@@ -115,8 +114,7 @@ export const Button = styled.button<{
|
||||
}
|
||||
|
||||
:hover {
|
||||
background: ${({ variant }) =>
|
||||
variant === 'primary' ? '#0F0F0F' : 'transparent'};
|
||||
background: ${({ variant }) => (variant === 'primary' ? '#0F0F0F' : 'transparent')};
|
||||
color: ${({ variant }) => (variant === 'primary' ? '#fff' : 'primary')};
|
||||
animation: gradient 10s ease infinite;
|
||||
-webkit-text-decoration-color: transparent;
|
||||
@@ -311,7 +309,7 @@ export const StarContainer = styled.div`
|
||||
export const StarIcon = styled.svg<{ active: boolean }>`
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
fill: ${props => (props.active ? 'currentColor' : '#CBD5E0')};
|
||||
fill: ${(props) => (props.active ? 'currentColor' : '#CBD5E0')};
|
||||
`
|
||||
|
||||
export const ReviewsOther = styled.div`
|
||||
|
||||
@@ -6,18 +6,16 @@
|
||||
import type { LoadContext, Plugin } from '@docusaurus/types'
|
||||
import TerserPlugin, { esbuildMinify } from 'terser-webpack-plugin'
|
||||
|
||||
export default function (context: LoadContext, options: unknown): Plugin {
|
||||
export default function (_context: LoadContext, _options: unknown): Plugin {
|
||||
return {
|
||||
name: 'webpack-docusaurus-plugin',
|
||||
configureWebpack(config, isServer, utils) {
|
||||
configureWebpack(config, _isServer, _utils) {
|
||||
const cacheOptions = { cache: process.env.CI !== 'true' }
|
||||
|
||||
const minimizer = new TerserPlugin({
|
||||
minify: esbuildMinify,
|
||||
})
|
||||
const minimizers = config.optimization.minimizer?.map(m =>
|
||||
m instanceof TerserPlugin ? minimizer : m,
|
||||
)
|
||||
const minimizers = config.optimization.minimizer?.map((m) => (m instanceof TerserPlugin ? minimizer : m))
|
||||
|
||||
return {
|
||||
mergeStrategy: { 'optimization.minimizer': 'replace' },
|
||||
|
||||
+114
-1914
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user