mirror of
https://github.com/discordeno/discordeno.git
synced 2026-09-17 08:47:22 +00:00
benchmark test (#2830)
* ci: test
* ci: add script
* ci: change to js
* ci: test
* ci: fix error
* ci: fix script
* chore: add benchmark
* ci: fix need input
* fix: read file with dir
* ci: change push to trigger on main only
* ci: try new method
* ci: fix "true"
* chore: fix set output
* fix: set output
* ci: increase number of try
* chore: clean up dir
* fix needs
* bench: add memory bench
* bench: import memory bench
* bench: fix v19 syntax
* bench: more fix
* bench: add filter
* bench: minor fix
* ci: read file in sync
* chore: yarn install
* chore: add db to ignore
* refactor(bench): use loader
* bench: only bench on one event
* bench: add type to db event
* chore(bench): better type
* bench: add rest simplifyUrl bench
* chore: add microtime
* refactor: add fall back
* Revert "ci: change push to trigger on main only"
This reverts commit 04df971025.
* chore: yarn install
* ci: trigger push event only on main branch
* chore(bench): use node-fetch
* refactor(bench): make it work with other function and event
* chore(bench): better name
This commit is contained in:
@@ -0,0 +1,51 @@
|
|||||||
|
name: Benchmark
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_call:
|
||||||
|
outputs:
|
||||||
|
cpuMatch:
|
||||||
|
value: ${{ jobs.benchmark.outputs.cpuMatch }}
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
benchmark:
|
||||||
|
name: Benchmark
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
cpuMatch: ${{ steps.cpuCheck.outputs.match }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
- name: Check cpu model
|
||||||
|
id: cpuCheck
|
||||||
|
run: node ./scripts/checkCpuModel.js
|
||||||
|
|
||||||
|
- name: Get yarn cache directory path
|
||||||
|
if: ${{ steps.cpuCheck.outputs.match == 'true' }}
|
||||||
|
id: yarn-cache-dir-path
|
||||||
|
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
|
||||||
|
- uses: actions/cache@v3
|
||||||
|
if: ${{ steps.cpuCheck.outputs.match == 'true' }}
|
||||||
|
with:
|
||||||
|
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
||||||
|
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-yarn-
|
||||||
|
- run: yarn install --immutable
|
||||||
|
if: ${{ steps.cpuCheck.outputs.match == 'true' }}
|
||||||
|
- name: Build
|
||||||
|
if: ${{ steps.cpuCheck.outputs.match == 'true' }}
|
||||||
|
run: yarn build
|
||||||
|
|
||||||
|
#
|
||||||
|
- name: Download db from benchmark repo
|
||||||
|
if: ${{ steps.cpuCheck.outputs.match == 'true' }}
|
||||||
|
run: wget https://github.com/discordeno/benchmarks/raw/main/db.tar.gz
|
||||||
|
- name: Decompress db
|
||||||
|
if: ${{ steps.cpuCheck.outputs.match == 'true' }}
|
||||||
|
run: tar -xzvf db.tar.gz
|
||||||
|
|
||||||
|
- name: Benchmark
|
||||||
|
if: ${{ steps.cpuCheck.outputs.match == 'true' }}
|
||||||
|
run: node --expose-gc ./packages/benchmark/dist/index.js
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
name: Benchmark with retry
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
benchmark-try-1:
|
||||||
|
uses: ./.github/workflows/benchmark.yml
|
||||||
|
|
||||||
|
benchmark-try-2:
|
||||||
|
needs: benchmark-try-1
|
||||||
|
if: ${{ needs.benchmark-try-1.outputs.cpuMatch == 'false' }}
|
||||||
|
uses: ./.github/workflows/benchmark.yml
|
||||||
|
|
||||||
|
benchmark-try-3:
|
||||||
|
needs: benchmark-try-2
|
||||||
|
if: ${{ needs.benchmark-try-2.outputs.cpuMatch == 'false' }}
|
||||||
|
uses: ./.github/workflows/benchmark.yml
|
||||||
|
|
||||||
|
benchmark-try-4:
|
||||||
|
needs: benchmark-try-3
|
||||||
|
if: ${{ needs.benchmark-try-3.outputs.cpuMatch == 'false' }}
|
||||||
|
uses: ./.github/workflows/benchmark.yml
|
||||||
|
|
||||||
|
benchmark-try-5:
|
||||||
|
needs: benchmark-try-4
|
||||||
|
if: ${{ needs.benchmark-try-4.outputs.cpuMatch == 'false' }}
|
||||||
|
uses: ./.github/workflows/benchmark.yml
|
||||||
|
|
||||||
|
benchmark-try-6:
|
||||||
|
needs: benchmark-try-5
|
||||||
|
if: ${{ needs.benchmark-try-5.outputs.cpuMatch == 'false' }}
|
||||||
|
uses: ./.github/workflows/benchmark.yml
|
||||||
|
|
||||||
|
benchmark-try-7:
|
||||||
|
needs: benchmark-try-6
|
||||||
|
if: ${{ needs.benchmark-try-6.outputs.cpuMatch == 'false' }}
|
||||||
|
uses: ./.github/workflows/benchmark.yml
|
||||||
|
|
||||||
|
benchmark-try-8:
|
||||||
|
needs: benchmark-try-7
|
||||||
|
if: ${{ needs.benchmark-try-7.outputs.cpuMatch == 'false' }}
|
||||||
|
uses: ./.github/workflows/benchmark.yml
|
||||||
|
|
||||||
|
benchmark-try-9:
|
||||||
|
needs: benchmark-try-8
|
||||||
|
if: ${{ needs.benchmark-try-8.outputs.cpuMatch == 'false' }}
|
||||||
|
uses: ./.github/workflows/benchmark.yml
|
||||||
|
|
||||||
|
benchmark-try-10:
|
||||||
|
needs: benchmark-try-9
|
||||||
|
if: ${{ needs.benchmark-try-9.outputs.cpuMatch == 'false' }}
|
||||||
|
uses: ./.github/workflows/benchmark.yml
|
||||||
@@ -33,6 +33,7 @@ out
|
|||||||
build
|
build
|
||||||
.docusaurus
|
.docusaurus
|
||||||
.cache-loader
|
.cache-loader
|
||||||
|
/db
|
||||||
|
|
||||||
# misc
|
# misc
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"jsc": {
|
||||||
|
"parser": {
|
||||||
|
"syntax": "typescript",
|
||||||
|
"decorators": true,
|
||||||
|
"dynamicImport": true
|
||||||
|
},
|
||||||
|
"transform": {
|
||||||
|
"legacyDecorator": true,
|
||||||
|
"decoratorMetadata": true
|
||||||
|
},
|
||||||
|
"target": "es2022",
|
||||||
|
"keepClassNames": true,
|
||||||
|
"loose": true
|
||||||
|
},
|
||||||
|
"module": {
|
||||||
|
"type": "es6",
|
||||||
|
"strict": false,
|
||||||
|
"strictMode": true,
|
||||||
|
"lazy": false,
|
||||||
|
"noInterop": false
|
||||||
|
},
|
||||||
|
"sourceMaps": true
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"name": "benchmark",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"main": "./dist/index.js",
|
||||||
|
"types": "./dist/index.d.ts",
|
||||||
|
"type": "module",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/discordeno/discordeno.git"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build:type": "tsc --declaration --emitDeclarationOnly --declarationDir dist",
|
||||||
|
"release-build": "yarn build && yarn build:type",
|
||||||
|
"fmt": "eslint --fix \"src/**/*.ts*\"",
|
||||||
|
"lint": "eslint \"src/**/*.ts*\"",
|
||||||
|
"build": "swc src --delete-dir-on-start --out-dir dist && node ../../scripts/fixBenchExtension.js",
|
||||||
|
"bench": "node dist/index.js"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@discordeno/bot": "latest",
|
||||||
|
"@discordeno/gateway": "19.0.0-alpha.1",
|
||||||
|
"@discordeno/rest": "19.0.0-alpha.1",
|
||||||
|
"@discordeno/types": "19.0.0-alpha.1",
|
||||||
|
"@discordeno/utils": "19.0.0-alpha.1",
|
||||||
|
"benchmark": "^2.1.4",
|
||||||
|
"microtime": "^3.1.1",
|
||||||
|
"node-fetch": "^3.3.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@swc/cli": "^0.1.57",
|
||||||
|
"@swc/core": "^1.3.21",
|
||||||
|
"@types/benchmark": "^2",
|
||||||
|
"@types/node": "^18.11.9",
|
||||||
|
"eslint": "^8.0.1",
|
||||||
|
"eslint-config-discordeno": "*",
|
||||||
|
"ts-node": "^10.9.1",
|
||||||
|
"tsconfig": "*",
|
||||||
|
"typescript": "^4.9.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
import Benchmark from 'benchmark'
|
||||||
|
|
||||||
|
export const suite = new Benchmark.Suite()
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
import { camelize, snakelize } from '@discordeno/utils'
|
||||||
|
import { suite } from '../benchmarkSuite.js'
|
||||||
|
import { events } from '../utils/db.js'
|
||||||
|
|
||||||
|
const camelizedEvents: any[] = []
|
||||||
|
|
||||||
|
events.forEach((event) => {
|
||||||
|
camelizedEvents.push(camelize(event))
|
||||||
|
})
|
||||||
|
|
||||||
|
suite.add(`Camelize 1 event`, () => {
|
||||||
|
snakelize(events[1])
|
||||||
|
})
|
||||||
|
|
||||||
|
suite.add(`Snakelize 1 event`, () => {
|
||||||
|
snakelize(camelizedEvents[1])
|
||||||
|
})
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
import { createBot, type Bot } from '@discordeno/bot'
|
||||||
|
import { events as dbEvents } from '../utils/db.js'
|
||||||
|
import { memoryBenchmark } from '../utils/memoryBenchmark.js'
|
||||||
|
|
||||||
|
/* Example Usage
|
||||||
|
deno run --v8-flags="--expose-gc" -A .\index.ts
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
import { createBot } from "https://deno.land/x/discordeno@17.1.0/mod.ts";
|
||||||
|
import { enableCachePlugin } from "https://deno.land/x/discordeno@17.1.0/plugins/mod.ts";
|
||||||
|
memoryBenchmark(() => enableCachePlugin(createBot({
|
||||||
|
token: " ",
|
||||||
|
botId: 0n,
|
||||||
|
})))
|
||||||
|
*/
|
||||||
|
|
||||||
|
const enableCachePlugin = (bot: Bot): Bot => bot
|
||||||
|
|
||||||
|
await memoryBenchmark(
|
||||||
|
'[Cache Plugin]',
|
||||||
|
() =>
|
||||||
|
enableCachePlugin(
|
||||||
|
createBot({
|
||||||
|
token: ' ',
|
||||||
|
events: {},
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
(bot, event) => {
|
||||||
|
// @ts-expect-error it works
|
||||||
|
bot.events[
|
||||||
|
event.payload.t!.toLowerCase().replace(/_([a-z])/g, (g) => {
|
||||||
|
return g[1].toUpperCase()
|
||||||
|
})
|
||||||
|
]?.(event.payload.d, {})
|
||||||
|
},
|
||||||
|
dbEvents.filter((event) => event.payload.t),
|
||||||
|
)
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
import { createRestManager } from '@discordeno/rest'
|
||||||
|
import { suite } from '../benchmarkSuite.js'
|
||||||
|
|
||||||
|
const rest = createRestManager({ token: ' ' })
|
||||||
|
|
||||||
|
suite.add(`rest.simplifyUrl`, () => {
|
||||||
|
rest.simplifyUrl('/messages/555555555555555555', 'PUT')
|
||||||
|
rest.simplifyUrl('/users/555555555555555555', 'PUT')
|
||||||
|
rest.simplifyUrl('/webhooks/555555555555555555', 'PUT')
|
||||||
|
rest.simplifyUrl('/channel/555555555555555555', 'PUT')
|
||||||
|
rest.simplifyUrl('/guild/555555555555555555', 'PUT')
|
||||||
|
rest.simplifyUrl('/channels/555555555555555555', 'PUT')
|
||||||
|
rest.simplifyUrl('/guilds/555555555555555555', 'PUT')
|
||||||
|
rest.simplifyUrl('/channels/555555555555555555/reactions/555555555555555555/wdiubaibfwuabfobaowbfoibnion', 'PUT')
|
||||||
|
rest.simplifyUrl('/channels/555555555555555555/messages/555555555555555555', 'DELETE')
|
||||||
|
rest.simplifyUrl('/channels/555555555555555555/messages/555555555555555555', 'POST')
|
||||||
|
rest.simplifyUrl('/channels/555555555555555555/messages/555555555555555555', 'GET')
|
||||||
|
rest.simplifyUrl('/channels/555555555555555555/messages/555555555555555555', 'PUT')
|
||||||
|
})
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import fs from 'node:fs/promises'
|
||||||
|
import { suite } from './benchmarkSuite.js'
|
||||||
|
|
||||||
|
const benchmarks = await fs.readdir('packages/benchmark/dist/benchmarks').then((files) => files.filter((file) => file.endsWith('.js')))
|
||||||
|
|
||||||
|
await Promise.all(benchmarks.map(async (file) => await import(`./benchmarks/${file}`)))
|
||||||
|
|
||||||
|
suite
|
||||||
|
.on('cycle', function (event: any) {
|
||||||
|
console.log(String(event.target))
|
||||||
|
})
|
||||||
|
.run()
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
import type { DiscordGatewayPayload } from '@discordeno/types'
|
||||||
|
import fetch from 'node-fetch'
|
||||||
|
import fs from 'node:fs/promises'
|
||||||
|
|
||||||
|
export const events: Array<{
|
||||||
|
shardId: number
|
||||||
|
payload: DiscordGatewayPayload
|
||||||
|
}> = []
|
||||||
|
|
||||||
|
try {
|
||||||
|
const files = await fs.readdir('db/events')
|
||||||
|
|
||||||
|
for await (const file of files) {
|
||||||
|
const eventsInFile: Array<
|
||||||
|
| {
|
||||||
|
shardId: number
|
||||||
|
payload: DiscordGatewayPayload
|
||||||
|
}
|
||||||
|
| string
|
||||||
|
> = Object.values(await fs.readFile(`db/events/${file}`, 'utf8').then((text) => JSON.parse(text)))
|
||||||
|
eventsInFile.forEach((eventInFile) => {
|
||||||
|
if (typeof eventInFile === 'string') return
|
||||||
|
events.push(eventInFile)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
const event = await fetch('https://raw.githubusercontent.com/discordeno/benchmarks/main/db/events/10.json')
|
||||||
|
.then(async (res) => await res.json())
|
||||||
|
.then((eventsInFile: any) => eventsInFile['0'])
|
||||||
|
for (let i = 0; i < 10; i++) {
|
||||||
|
events.push(event)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,157 @@
|
|||||||
|
export async function memoryBenchmark<O, E>(
|
||||||
|
name: string,
|
||||||
|
objectCreator: () => O,
|
||||||
|
objectFeeder: (object: O, event: E) => void,
|
||||||
|
events: E[],
|
||||||
|
options: { times: number; log: boolean; table: boolean } = {
|
||||||
|
times: 3,
|
||||||
|
log: false,
|
||||||
|
table: false,
|
||||||
|
},
|
||||||
|
): Promise<void> {
|
||||||
|
const garbageCollect = global.gc ?? (() => {})
|
||||||
|
|
||||||
|
const stages = ['start', 'loaded', 'end', 'cached'] as const
|
||||||
|
const typesOfMemUsages = ['rss', 'heapUsed', 'heapTotal'] as const
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
||||||
|
async function runTest(object: O) {
|
||||||
|
// Determine memory stats now before touching anything
|
||||||
|
const results: {
|
||||||
|
start: NodeJS.MemoryUsage
|
||||||
|
loaded?: NodeJS.MemoryUsage
|
||||||
|
end?: NodeJS.MemoryUsage
|
||||||
|
cached?: NodeJS.MemoryUsage
|
||||||
|
} = {
|
||||||
|
start: process.memoryUsage(),
|
||||||
|
}
|
||||||
|
garbageCollect()
|
||||||
|
results.start = process.memoryUsage()
|
||||||
|
if (options.log) console.log(`[INFO] Loading json files.`)
|
||||||
|
|
||||||
|
if (options.log) {
|
||||||
|
console.log(`[INFO] DB files loaded into memory.`, events.length)
|
||||||
|
}
|
||||||
|
// Set the memory stats for when files are loaded in.
|
||||||
|
results.loaded = process.memoryUsage()
|
||||||
|
|
||||||
|
events.forEach((event) => {
|
||||||
|
objectFeeder(object, event)
|
||||||
|
})
|
||||||
|
|
||||||
|
if (options.log) {
|
||||||
|
console.log(`[INFO] Processed ${events.length} events.`)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set results for data once all events are processed
|
||||||
|
results.end = process.memoryUsage()
|
||||||
|
|
||||||
|
// @ts-expect-error init the object
|
||||||
|
results.cached = {}
|
||||||
|
for (const typeOfMemUsage of typesOfMemUsages) {
|
||||||
|
results.cached![typeOfMemUsage] = results.end[typeOfMemUsage] - results.loaded[typeOfMemUsage]
|
||||||
|
}
|
||||||
|
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
|
||||||
|
const allResults = {
|
||||||
|
start: {
|
||||||
|
rss: [] as number[],
|
||||||
|
heapUsed: [] as number[],
|
||||||
|
heapTotal: [] as number[],
|
||||||
|
},
|
||||||
|
loaded: {
|
||||||
|
rss: [] as number[],
|
||||||
|
heapUsed: [] as number[],
|
||||||
|
heapTotal: [] as number[],
|
||||||
|
},
|
||||||
|
end: {
|
||||||
|
rss: [] as number[],
|
||||||
|
heapUsed: [] as number[],
|
||||||
|
heapTotal: [] as number[],
|
||||||
|
},
|
||||||
|
cached: {
|
||||||
|
rss: [] as number[],
|
||||||
|
heapUsed: [] as number[],
|
||||||
|
heapTotal: [] as number[],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const BYTES = 1000000
|
||||||
|
|
||||||
|
for (let index = 0; index < options.times; index++) {
|
||||||
|
if (options.log) console.log('running the', index + 1, 'time')
|
||||||
|
const currentResult = await runTest(objectCreator())
|
||||||
|
for (const typeOfMemUsage of typesOfMemUsages) {
|
||||||
|
for (const stage of stages) {
|
||||||
|
allResults[stage][typeOfMemUsage].push(currentResult[stage]![typeOfMemUsage])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends ReadonlyArray<infer ElementType> ? ElementType : never
|
||||||
|
|
||||||
|
const tableRows = ['Starting', 'Loaded', 'End', 'Cached'] as const
|
||||||
|
const tableFields = ['RSS', 'Heap Used', 'Heap Total'] as const
|
||||||
|
|
||||||
|
const preprocessedResults: {
|
||||||
|
[K in ArrayElement<typeof tableRows>]?: {
|
||||||
|
[K in ArrayElement<typeof tableFields>]?: {
|
||||||
|
value: number
|
||||||
|
min: number
|
||||||
|
max: number
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} = {}
|
||||||
|
|
||||||
|
for (const [index, tableRow] of tableRows.entries()) {
|
||||||
|
for (const [index2, tableField] of tableFields.entries()) {
|
||||||
|
if (index2 === 0) preprocessedResults[tableRow] = {}
|
||||||
|
preprocessedResults[tableRow]![tableField] = {
|
||||||
|
value:
|
||||||
|
Math.round(
|
||||||
|
(allResults[stages[index]][typesOfMemUsages[index2]].reduce((acc, c) => acc + c, 0) / allResults.start.rss.length / BYTES) * 100,
|
||||||
|
) / 100,
|
||||||
|
min: Math.round((Math.min(...allResults[stages[index]][typesOfMemUsages[index2]]) / BYTES) * 100) / 100,
|
||||||
|
max: Math.round((Math.max(...allResults[stages[index]][typesOfMemUsages[index2]]) / BYTES) * 100) / 100,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const processedResults = preprocessedResults as {
|
||||||
|
[K in ArrayElement<typeof tableRows>]: {
|
||||||
|
[K in ArrayElement<typeof tableFields>]: {
|
||||||
|
value: number
|
||||||
|
min: number
|
||||||
|
max: number
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const humanReadable: {
|
||||||
|
[K in ArrayElement<typeof tableRows>]?: {
|
||||||
|
[K in ArrayElement<typeof tableFields>]?: string
|
||||||
|
}
|
||||||
|
} = {}
|
||||||
|
|
||||||
|
for (const tableRow of tableRows) {
|
||||||
|
for (const [index, tableField] of tableFields.entries()) {
|
||||||
|
if (index === 0) humanReadable[tableRow] = {}
|
||||||
|
humanReadable[tableRow]![
|
||||||
|
tableField
|
||||||
|
] = `${processedResults[tableRow][tableField].value} MB (${processedResults[tableRow][tableField].min} MB … ${processedResults[tableRow][tableField].max} MB)`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.table) console.table(humanReadable)
|
||||||
|
|
||||||
|
for (const resultKey of Object.keys(processedResults.Cached) as Array<keyof typeof processedResults.Cached>) {
|
||||||
|
const range = Math.max(
|
||||||
|
Math.round((processedResults.Cached[resultKey].min / processedResults.Cached[resultKey].value) * 100) / 100,
|
||||||
|
Math.round((processedResults.Cached[resultKey].max / processedResults.Cached[resultKey].value) * 100) / 100,
|
||||||
|
)
|
||||||
|
|
||||||
|
console.log(`${name} ${resultKey.toString()} x ${processedResults.Cached[resultKey].value} MB ±${isFinite(range) ? range : 0}% (3 runs sampled)`)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"extends": "tsconfig/base.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "./dist",
|
||||||
|
},
|
||||||
|
"include": [
|
||||||
|
"./src/**/*.ts",
|
||||||
|
"./src/**/*.tsx"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"node_modules",
|
||||||
|
"dist",
|
||||||
|
"test",
|
||||||
|
"tests"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import fs from 'node:fs'
|
||||||
|
import os from 'node:os'
|
||||||
|
|
||||||
|
const hostCpu = os.cpus()[0].model.trim()
|
||||||
|
const targetCpu = await fetch('https://raw.githubusercontent.com/discordeno/discordeno/benchies/cpu')
|
||||||
|
.then((res) => res.text())
|
||||||
|
.then((text) => text.slice(0, -1))
|
||||||
|
console.dir(`host cpu: ${hostCpu} target cpu: ${targetCpu}`)
|
||||||
|
|
||||||
|
let outputFile = fs.readFileSync(process.env.GITHUB_OUTPUT, 'utf8')
|
||||||
|
outputFile += `\nmatch=${hostCpu === targetCpu}`
|
||||||
|
fs.writeFileSync(process.env.GITHUB_OUTPUT, outputFile, 'utf8')
|
||||||
@@ -3,19 +3,13 @@ import fs from 'node:fs'
|
|||||||
const dirs = ['']
|
const dirs = ['']
|
||||||
for await (const dir of dirs) {
|
for await (const dir of dirs) {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
fs.readdirSync(`benchDist${dir}`).map(async (file) => {
|
fs.readdirSync(`dist${dir}`).map(async (file) => {
|
||||||
if (!file.endsWith('.js')) {
|
if (!file.endsWith('.js') && !file.endsWith('.map') && !file.endsWith('.ts')) {
|
||||||
dirs.push(`${dir}/${file}`)
|
dirs.push(`${dir}/${file}`)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const content = await fs.promises.readFile(
|
const content = await fs.promises.readFile(`dist${dir}/${file}`, 'utf-8')
|
||||||
`benchDist${dir}/${file}`,
|
fs.promises.writeFile(`dist${dir}/${file}`, content.replace(/src\//g, 'dist/').replace(/\.ts/g, '.js'))
|
||||||
'utf-8'
|
}),
|
||||||
)
|
|
||||||
fs.promises.writeFile(
|
|
||||||
`benchDist${dir}/${file}`,
|
|
||||||
content.replace(/src\//g, 'dist/').replace(/\.ts/g, '.js')
|
|
||||||
)
|
|
||||||
})
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,6 +47,18 @@ __metadata:
|
|||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
|
"@discordeno/bot@npm:latest":
|
||||||
|
version: 19.0.0-next.abe8c0f
|
||||||
|
resolution: "@discordeno/bot@npm:19.0.0-next.abe8c0f"
|
||||||
|
dependencies:
|
||||||
|
"@discordeno/gateway": 19.0.0-next.abe8c0f
|
||||||
|
"@discordeno/rest": 19.0.0-next.abe8c0f
|
||||||
|
"@discordeno/types": 19.0.0-next.abe8c0f
|
||||||
|
"@discordeno/utils": 19.0.0-next.abe8c0f
|
||||||
|
checksum: 12091b3d06c89f6cf7c5ae93cef6af28922665cddbbdf4b07804795214833092f3292cb7a150c74ada1eddfa4cd2f958f888c582df7be794ab6dc1b0296cbf3f
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@discordeno/gateway@19.0.0-alpha.1, @discordeno/gateway@workspace:packages/gateway":
|
"@discordeno/gateway@19.0.0-alpha.1, @discordeno/gateway@workspace:packages/gateway":
|
||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@discordeno/gateway@workspace:packages/gateway"
|
resolution: "@discordeno/gateway@workspace:packages/gateway"
|
||||||
@@ -74,6 +86,17 @@ __metadata:
|
|||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
|
"@discordeno/gateway@npm:19.0.0-next.abe8c0f":
|
||||||
|
version: 19.0.0-next.abe8c0f
|
||||||
|
resolution: "@discordeno/gateway@npm:19.0.0-next.abe8c0f"
|
||||||
|
dependencies:
|
||||||
|
"@discordeno/types": 19.0.0-next.abe8c0f
|
||||||
|
"@discordeno/utils": 19.0.0-next.abe8c0f
|
||||||
|
ws: ^8.13.0
|
||||||
|
checksum: bf75ea743cd0d78e6bce8a2e450310eb7e5495429eeaa4a3e79de7178bc75239f100bfbe0c793df0415587713d2f89919b2a661e3526ac5999bcd7fdd52e8f45
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@discordeno/rest@19.0.0-alpha.1, @discordeno/rest@workspace:packages/rest":
|
"@discordeno/rest@19.0.0-alpha.1, @discordeno/rest@workspace:packages/rest":
|
||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@discordeno/rest@workspace:packages/rest"
|
resolution: "@discordeno/rest@workspace:packages/rest"
|
||||||
@@ -103,6 +126,18 @@ __metadata:
|
|||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
|
"@discordeno/rest@npm:19.0.0-next.abe8c0f":
|
||||||
|
version: 19.0.0-next.abe8c0f
|
||||||
|
resolution: "@discordeno/rest@npm:19.0.0-next.abe8c0f"
|
||||||
|
dependencies:
|
||||||
|
"@discordeno/types": 19.0.0-next.abe8c0f
|
||||||
|
"@discordeno/utils": 19.0.0-next.abe8c0f
|
||||||
|
dotenv: ^16.0.3
|
||||||
|
node-fetch: ^3.3.1
|
||||||
|
checksum: 34002f0d07e73fb8e309a62379489b6a134ac31d29d4a991d1641e5f8740c6ed95df0ea4bba976ea5e9c5a358db6d5755a0daecc1357325eb604340835af7889
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@discordeno/types@19.0.0-alpha.1, @discordeno/types@workspace:packages/types":
|
"@discordeno/types@19.0.0-alpha.1, @discordeno/types@workspace:packages/types":
|
||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@discordeno/types@workspace:packages/types"
|
resolution: "@discordeno/types@workspace:packages/types"
|
||||||
@@ -124,6 +159,13 @@ __metadata:
|
|||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
|
"@discordeno/types@npm:19.0.0-next.abe8c0f":
|
||||||
|
version: 19.0.0-next.abe8c0f
|
||||||
|
resolution: "@discordeno/types@npm:19.0.0-next.abe8c0f"
|
||||||
|
checksum: 1d71386b6b05d2d4c584519b8a2baf21d9a8ef51cca950e8811a88bbf7c1edc4ed636d53bd41492b10c5a12f5d719b0a4df6a4f64a3034594c6f71506de064a2
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@discordeno/utils@19.0.0-alpha.1, @discordeno/utils@workspace:packages/utils":
|
"@discordeno/utils@19.0.0-alpha.1, @discordeno/utils@workspace:packages/utils":
|
||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@discordeno/utils@workspace:packages/utils"
|
resolution: "@discordeno/utils@workspace:packages/utils"
|
||||||
@@ -149,6 +191,17 @@ __metadata:
|
|||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
|
"@discordeno/utils@npm:19.0.0-next.abe8c0f":
|
||||||
|
version: 19.0.0-next.abe8c0f
|
||||||
|
resolution: "@discordeno/utils@npm:19.0.0-next.abe8c0f"
|
||||||
|
dependencies:
|
||||||
|
"@discordeno/types": 19.0.0-next.abe8c0f
|
||||||
|
node-fetch: ^3.3.1
|
||||||
|
tweetnacl: ^1.0.3
|
||||||
|
checksum: 23f6889998725dee0fc414e739fcf6baf6ec03c84e7768863244b9201783046b8744c6fe64c5799d3ebfd2ab613cfd9de026e851230386ce31f1dfd426dea064
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@eslint-community/eslint-utils@npm:^4.2.0":
|
"@eslint-community/eslint-utils@npm:^4.2.0":
|
||||||
version: 4.2.0
|
version: 4.2.0
|
||||||
resolution: "@eslint-community/eslint-utils@npm:4.2.0"
|
resolution: "@eslint-community/eslint-utils@npm:4.2.0"
|
||||||
@@ -184,6 +237,23 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@eslint/eslintrc@npm:^2.0.2":
|
||||||
|
version: 2.0.2
|
||||||
|
resolution: "@eslint/eslintrc@npm:2.0.2"
|
||||||
|
dependencies:
|
||||||
|
ajv: ^6.12.4
|
||||||
|
debug: ^4.3.2
|
||||||
|
espree: ^9.5.1
|
||||||
|
globals: ^13.19.0
|
||||||
|
ignore: ^5.2.0
|
||||||
|
import-fresh: ^3.2.1
|
||||||
|
js-yaml: ^4.1.0
|
||||||
|
minimatch: ^3.1.2
|
||||||
|
strip-json-comments: ^3.1.1
|
||||||
|
checksum: cfcf5e12c7b2c4476482e7f12434e76eae16fcd163ee627309adb10b761e5caa4a4e52ed7be464423320ff3d11eca5b50de5bf8be3e25834222470835dd5c801
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@eslint/js@npm:8.36.0":
|
"@eslint/js@npm:8.36.0":
|
||||||
version: 8.36.0
|
version: 8.36.0
|
||||||
resolution: "@eslint/js@npm:8.36.0"
|
resolution: "@eslint/js@npm:8.36.0"
|
||||||
@@ -191,6 +261,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@eslint/js@npm:8.37.0":
|
||||||
|
version: 8.37.0
|
||||||
|
resolution: "@eslint/js@npm:8.37.0"
|
||||||
|
checksum: 7a07fb085c94ce1538949012c292fd3a6cd734f149bc03af6157dfbd8a7477678899ef57b4a27e15b36470a997389ad79a0533d5880c71e67720ae1a7de7c62d
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@gar/promisify@npm:^1.1.3":
|
"@gar/promisify@npm:^1.1.3":
|
||||||
version: 1.1.3
|
version: 1.1.3
|
||||||
resolution: "@gar/promisify@npm:1.1.3"
|
resolution: "@gar/promisify@npm:1.1.3"
|
||||||
@@ -379,7 +456,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@swc/cli@npm:^0.1.62":
|
"@swc/cli@npm:^0.1.57, @swc/cli@npm:^0.1.62":
|
||||||
version: 0.1.62
|
version: 0.1.62
|
||||||
resolution: "@swc/cli@npm:0.1.62"
|
resolution: "@swc/cli@npm:0.1.62"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -410,6 +487,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@swc/core-darwin-arm64@npm:1.3.42":
|
||||||
|
version: 1.3.42
|
||||||
|
resolution: "@swc/core-darwin-arm64@npm:1.3.42"
|
||||||
|
conditions: os=darwin & cpu=arm64
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@swc/core-darwin-x64@npm:1.3.40":
|
"@swc/core-darwin-x64@npm:1.3.40":
|
||||||
version: 1.3.40
|
version: 1.3.40
|
||||||
resolution: "@swc/core-darwin-x64@npm:1.3.40"
|
resolution: "@swc/core-darwin-x64@npm:1.3.40"
|
||||||
@@ -417,6 +501,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@swc/core-darwin-x64@npm:1.3.42":
|
||||||
|
version: 1.3.42
|
||||||
|
resolution: "@swc/core-darwin-x64@npm:1.3.42"
|
||||||
|
conditions: os=darwin & cpu=x64
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@swc/core-linux-arm-gnueabihf@npm:1.3.40":
|
"@swc/core-linux-arm-gnueabihf@npm:1.3.40":
|
||||||
version: 1.3.40
|
version: 1.3.40
|
||||||
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.40"
|
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.40"
|
||||||
@@ -424,6 +515,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@swc/core-linux-arm-gnueabihf@npm:1.3.42":
|
||||||
|
version: 1.3.42
|
||||||
|
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.42"
|
||||||
|
conditions: os=linux & cpu=arm
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@swc/core-linux-arm64-gnu@npm:1.3.40":
|
"@swc/core-linux-arm64-gnu@npm:1.3.40":
|
||||||
version: 1.3.40
|
version: 1.3.40
|
||||||
resolution: "@swc/core-linux-arm64-gnu@npm:1.3.40"
|
resolution: "@swc/core-linux-arm64-gnu@npm:1.3.40"
|
||||||
@@ -431,6 +529,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@swc/core-linux-arm64-gnu@npm:1.3.42":
|
||||||
|
version: 1.3.42
|
||||||
|
resolution: "@swc/core-linux-arm64-gnu@npm:1.3.42"
|
||||||
|
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@swc/core-linux-arm64-musl@npm:1.3.40":
|
"@swc/core-linux-arm64-musl@npm:1.3.40":
|
||||||
version: 1.3.40
|
version: 1.3.40
|
||||||
resolution: "@swc/core-linux-arm64-musl@npm:1.3.40"
|
resolution: "@swc/core-linux-arm64-musl@npm:1.3.40"
|
||||||
@@ -438,6 +543,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@swc/core-linux-arm64-musl@npm:1.3.42":
|
||||||
|
version: 1.3.42
|
||||||
|
resolution: "@swc/core-linux-arm64-musl@npm:1.3.42"
|
||||||
|
conditions: os=linux & cpu=arm64 & libc=musl
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@swc/core-linux-x64-gnu@npm:1.3.40":
|
"@swc/core-linux-x64-gnu@npm:1.3.40":
|
||||||
version: 1.3.40
|
version: 1.3.40
|
||||||
resolution: "@swc/core-linux-x64-gnu@npm:1.3.40"
|
resolution: "@swc/core-linux-x64-gnu@npm:1.3.40"
|
||||||
@@ -445,6 +557,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@swc/core-linux-x64-gnu@npm:1.3.42":
|
||||||
|
version: 1.3.42
|
||||||
|
resolution: "@swc/core-linux-x64-gnu@npm:1.3.42"
|
||||||
|
conditions: os=linux & cpu=x64 & libc=glibc
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@swc/core-linux-x64-musl@npm:1.3.40":
|
"@swc/core-linux-x64-musl@npm:1.3.40":
|
||||||
version: 1.3.40
|
version: 1.3.40
|
||||||
resolution: "@swc/core-linux-x64-musl@npm:1.3.40"
|
resolution: "@swc/core-linux-x64-musl@npm:1.3.40"
|
||||||
@@ -452,6 +571,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@swc/core-linux-x64-musl@npm:1.3.42":
|
||||||
|
version: 1.3.42
|
||||||
|
resolution: "@swc/core-linux-x64-musl@npm:1.3.42"
|
||||||
|
conditions: os=linux & cpu=x64 & libc=musl
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@swc/core-win32-arm64-msvc@npm:1.3.40":
|
"@swc/core-win32-arm64-msvc@npm:1.3.40":
|
||||||
version: 1.3.40
|
version: 1.3.40
|
||||||
resolution: "@swc/core-win32-arm64-msvc@npm:1.3.40"
|
resolution: "@swc/core-win32-arm64-msvc@npm:1.3.40"
|
||||||
@@ -459,6 +585,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@swc/core-win32-arm64-msvc@npm:1.3.42":
|
||||||
|
version: 1.3.42
|
||||||
|
resolution: "@swc/core-win32-arm64-msvc@npm:1.3.42"
|
||||||
|
conditions: os=win32 & cpu=arm64
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@swc/core-win32-ia32-msvc@npm:1.3.40":
|
"@swc/core-win32-ia32-msvc@npm:1.3.40":
|
||||||
version: 1.3.40
|
version: 1.3.40
|
||||||
resolution: "@swc/core-win32-ia32-msvc@npm:1.3.40"
|
resolution: "@swc/core-win32-ia32-msvc@npm:1.3.40"
|
||||||
@@ -466,6 +599,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@swc/core-win32-ia32-msvc@npm:1.3.42":
|
||||||
|
version: 1.3.42
|
||||||
|
resolution: "@swc/core-win32-ia32-msvc@npm:1.3.42"
|
||||||
|
conditions: os=win32 & cpu=ia32
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@swc/core-win32-x64-msvc@npm:1.3.40":
|
"@swc/core-win32-x64-msvc@npm:1.3.40":
|
||||||
version: 1.3.40
|
version: 1.3.40
|
||||||
resolution: "@swc/core-win32-x64-msvc@npm:1.3.40"
|
resolution: "@swc/core-win32-x64-msvc@npm:1.3.40"
|
||||||
@@ -473,6 +613,52 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@swc/core-win32-x64-msvc@npm:1.3.42":
|
||||||
|
version: 1.3.42
|
||||||
|
resolution: "@swc/core-win32-x64-msvc@npm:1.3.42"
|
||||||
|
conditions: os=win32 & cpu=x64
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"@swc/core@npm:^1.3.21":
|
||||||
|
version: 1.3.42
|
||||||
|
resolution: "@swc/core@npm:1.3.42"
|
||||||
|
dependencies:
|
||||||
|
"@swc/core-darwin-arm64": 1.3.42
|
||||||
|
"@swc/core-darwin-x64": 1.3.42
|
||||||
|
"@swc/core-linux-arm-gnueabihf": 1.3.42
|
||||||
|
"@swc/core-linux-arm64-gnu": 1.3.42
|
||||||
|
"@swc/core-linux-arm64-musl": 1.3.42
|
||||||
|
"@swc/core-linux-x64-gnu": 1.3.42
|
||||||
|
"@swc/core-linux-x64-musl": 1.3.42
|
||||||
|
"@swc/core-win32-arm64-msvc": 1.3.42
|
||||||
|
"@swc/core-win32-ia32-msvc": 1.3.42
|
||||||
|
"@swc/core-win32-x64-msvc": 1.3.42
|
||||||
|
dependenciesMeta:
|
||||||
|
"@swc/core-darwin-arm64":
|
||||||
|
optional: true
|
||||||
|
"@swc/core-darwin-x64":
|
||||||
|
optional: true
|
||||||
|
"@swc/core-linux-arm-gnueabihf":
|
||||||
|
optional: true
|
||||||
|
"@swc/core-linux-arm64-gnu":
|
||||||
|
optional: true
|
||||||
|
"@swc/core-linux-arm64-musl":
|
||||||
|
optional: true
|
||||||
|
"@swc/core-linux-x64-gnu":
|
||||||
|
optional: true
|
||||||
|
"@swc/core-linux-x64-musl":
|
||||||
|
optional: true
|
||||||
|
"@swc/core-win32-arm64-msvc":
|
||||||
|
optional: true
|
||||||
|
"@swc/core-win32-ia32-msvc":
|
||||||
|
optional: true
|
||||||
|
"@swc/core-win32-x64-msvc":
|
||||||
|
optional: true
|
||||||
|
checksum: 5c28c03ee6a4e1f630c4a519b56d7e23a0102f70fad977a3ab144a3da96231cf4849e473cdc9ee7be6b9266ba0838d0bc0b6b3575a75540f302befe96cc9606e
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@swc/core@npm:^1.3.40":
|
"@swc/core@npm:^1.3.40":
|
||||||
version: 1.3.40
|
version: 1.3.40
|
||||||
resolution: "@swc/core@npm:1.3.40"
|
resolution: "@swc/core@npm:1.3.40"
|
||||||
@@ -563,6 +749,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@types/benchmark@npm:^2":
|
||||||
|
version: 2.1.2
|
||||||
|
resolution: "@types/benchmark@npm:2.1.2"
|
||||||
|
checksum: dc5e544ffca59bdc61008d89f007c14c281c17e80d50385da81eb9182e4466a9208ceb7af72ddfb4df1e2445ea35f2af36854168f698edd4c015a4262232462d
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@types/cacheable-request@npm:^6.0.1":
|
"@types/cacheable-request@npm:^6.0.1":
|
||||||
version: 6.0.3
|
version: 6.0.3
|
||||||
resolution: "@types/cacheable-request@npm:6.0.3"
|
resolution: "@types/cacheable-request@npm:6.0.3"
|
||||||
@@ -642,6 +835,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"@types/node@npm:^18.11.9":
|
||||||
|
version: 18.15.11
|
||||||
|
resolution: "@types/node@npm:18.15.11"
|
||||||
|
checksum: 977b4ad04708897ff0eb049ecf82246d210939c82461922d20f7d2dcfd81bbc661582ba3af28869210f7e8b1934529dcd46bff7d448551400f9d48b9d3bddec3
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"@types/node@npm:^18.15.3":
|
"@types/node@npm:^18.15.3":
|
||||||
version: 18.15.3
|
version: 18.15.3
|
||||||
resolution: "@types/node@npm:18.15.3"
|
resolution: "@types/node@npm:18.15.3"
|
||||||
@@ -1051,6 +1251,40 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"benchmark@npm:^2.1.4":
|
||||||
|
version: 2.1.4
|
||||||
|
resolution: "benchmark@npm:2.1.4"
|
||||||
|
dependencies:
|
||||||
|
lodash: ^4.17.4
|
||||||
|
platform: ^1.3.3
|
||||||
|
checksum: aa466561d4f2b0a2419a3069b8f90fd35ffacf26849697eea9de525ecfbd10b44da11070cc51c88d772076db8cb2415641b493de7d6c024fdf8551019c6fcf1c
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"benchmark@workspace:packages/benchmark":
|
||||||
|
version: 0.0.0-use.local
|
||||||
|
resolution: "benchmark@workspace:packages/benchmark"
|
||||||
|
dependencies:
|
||||||
|
"@discordeno/bot": latest
|
||||||
|
"@discordeno/gateway": 19.0.0-alpha.1
|
||||||
|
"@discordeno/rest": 19.0.0-alpha.1
|
||||||
|
"@discordeno/types": 19.0.0-alpha.1
|
||||||
|
"@discordeno/utils": 19.0.0-alpha.1
|
||||||
|
"@swc/cli": ^0.1.57
|
||||||
|
"@swc/core": ^1.3.21
|
||||||
|
"@types/benchmark": ^2
|
||||||
|
"@types/node": ^18.11.9
|
||||||
|
benchmark: ^2.1.4
|
||||||
|
eslint: ^8.0.1
|
||||||
|
eslint-config-discordeno: "*"
|
||||||
|
microtime: ^3.1.1
|
||||||
|
node-fetch: ^3.3.1
|
||||||
|
ts-node: ^10.9.1
|
||||||
|
tsconfig: "*"
|
||||||
|
typescript: ^4.9.3
|
||||||
|
languageName: unknown
|
||||||
|
linkType: soft
|
||||||
|
|
||||||
"bin-check@npm:^4.1.0":
|
"bin-check@npm:^4.1.0":
|
||||||
version: 4.1.0
|
version: 4.1.0
|
||||||
resolution: "bin-check@npm:4.1.0"
|
resolution: "bin-check@npm:4.1.0"
|
||||||
@@ -1995,6 +2229,63 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"eslint-visitor-keys@npm:^3.4.0":
|
||||||
|
version: 3.4.0
|
||||||
|
resolution: "eslint-visitor-keys@npm:3.4.0"
|
||||||
|
checksum: 33159169462d3989321a1ec1e9aaaf6a24cc403d5d347e9886d1b5bfe18ffa1be73bdc6203143a28a606b142b1af49787f33cff0d6d0813eb5f2e8d2e1a6043c
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
|
"eslint@npm:^8.0.1":
|
||||||
|
version: 8.37.0
|
||||||
|
resolution: "eslint@npm:8.37.0"
|
||||||
|
dependencies:
|
||||||
|
"@eslint-community/eslint-utils": ^4.2.0
|
||||||
|
"@eslint-community/regexpp": ^4.4.0
|
||||||
|
"@eslint/eslintrc": ^2.0.2
|
||||||
|
"@eslint/js": 8.37.0
|
||||||
|
"@humanwhocodes/config-array": ^0.11.8
|
||||||
|
"@humanwhocodes/module-importer": ^1.0.1
|
||||||
|
"@nodelib/fs.walk": ^1.2.8
|
||||||
|
ajv: ^6.10.0
|
||||||
|
chalk: ^4.0.0
|
||||||
|
cross-spawn: ^7.0.2
|
||||||
|
debug: ^4.3.2
|
||||||
|
doctrine: ^3.0.0
|
||||||
|
escape-string-regexp: ^4.0.0
|
||||||
|
eslint-scope: ^7.1.1
|
||||||
|
eslint-visitor-keys: ^3.4.0
|
||||||
|
espree: ^9.5.1
|
||||||
|
esquery: ^1.4.2
|
||||||
|
esutils: ^2.0.2
|
||||||
|
fast-deep-equal: ^3.1.3
|
||||||
|
file-entry-cache: ^6.0.1
|
||||||
|
find-up: ^5.0.0
|
||||||
|
glob-parent: ^6.0.2
|
||||||
|
globals: ^13.19.0
|
||||||
|
grapheme-splitter: ^1.0.4
|
||||||
|
ignore: ^5.2.0
|
||||||
|
import-fresh: ^3.0.0
|
||||||
|
imurmurhash: ^0.1.4
|
||||||
|
is-glob: ^4.0.0
|
||||||
|
is-path-inside: ^3.0.3
|
||||||
|
js-sdsl: ^4.1.4
|
||||||
|
js-yaml: ^4.1.0
|
||||||
|
json-stable-stringify-without-jsonify: ^1.0.1
|
||||||
|
levn: ^0.4.1
|
||||||
|
lodash.merge: ^4.6.2
|
||||||
|
minimatch: ^3.1.2
|
||||||
|
natural-compare: ^1.4.0
|
||||||
|
optionator: ^0.9.1
|
||||||
|
strip-ansi: ^6.0.1
|
||||||
|
strip-json-comments: ^3.1.0
|
||||||
|
text-table: ^0.2.0
|
||||||
|
bin:
|
||||||
|
eslint: bin/eslint.js
|
||||||
|
checksum: 80f3d5cdce2d671f4794e392d234a78d039c347673defb0596268bd481e8f30a53d93c01ff4f66a546c87d97ab4122c0e9cafe1371f87cb03cee6b7d5aa97595
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"eslint@npm:^8.36.0":
|
"eslint@npm:^8.36.0":
|
||||||
version: 8.36.0
|
version: 8.36.0
|
||||||
resolution: "eslint@npm:8.36.0"
|
resolution: "eslint@npm:8.36.0"
|
||||||
@@ -2056,6 +2347,17 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"espree@npm:^9.5.1":
|
||||||
|
version: 9.5.1
|
||||||
|
resolution: "espree@npm:9.5.1"
|
||||||
|
dependencies:
|
||||||
|
acorn: ^8.8.0
|
||||||
|
acorn-jsx: ^5.3.2
|
||||||
|
eslint-visitor-keys: ^3.4.0
|
||||||
|
checksum: cdf6e43540433d917c4f2ee087c6e987b2063baa85a1d9cdaf51533d78275ebd5910c42154e7baf8e3e89804b386da0a2f7fad2264d8f04420e7506bf87b3b88
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"esquery@npm:^1.4.2":
|
"esquery@npm:^1.4.2":
|
||||||
version: 1.5.0
|
version: 1.5.0
|
||||||
resolution: "esquery@npm:1.5.0"
|
resolution: "esquery@npm:1.5.0"
|
||||||
@@ -3250,6 +3552,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"lodash@npm:^4.17.4":
|
||||||
|
version: 4.17.21
|
||||||
|
resolution: "lodash@npm:4.17.21"
|
||||||
|
checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"log-symbols@npm:4.1.0":
|
"log-symbols@npm:4.1.0":
|
||||||
version: 4.1.0
|
version: 4.1.0
|
||||||
resolution: "log-symbols@npm:4.1.0"
|
resolution: "log-symbols@npm:4.1.0"
|
||||||
@@ -3394,6 +3703,17 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"microtime@npm:^3.1.1":
|
||||||
|
version: 3.1.1
|
||||||
|
resolution: "microtime@npm:3.1.1"
|
||||||
|
dependencies:
|
||||||
|
node-addon-api: ^5.0.0
|
||||||
|
node-gyp: latest
|
||||||
|
node-gyp-build: ^4.4.0
|
||||||
|
checksum: 1161571d9c994070139d8dd65160bb5ebb87044cb0ea9828a65fde201fcf9b90da9c2897e352a26e852a7fa9dd7b6774128b50854462d117be1b019abff41887
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"mime-db@npm:^1.28.0":
|
"mime-db@npm:^1.28.0":
|
||||||
version: 1.52.0
|
version: 1.52.0
|
||||||
resolution: "mime-db@npm:1.52.0"
|
resolution: "mime-db@npm:1.52.0"
|
||||||
@@ -3656,6 +3976,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"node-addon-api@npm:^5.0.0":
|
||||||
|
version: 5.1.0
|
||||||
|
resolution: "node-addon-api@npm:5.1.0"
|
||||||
|
dependencies:
|
||||||
|
node-gyp: latest
|
||||||
|
checksum: 2508bd2d2981945406243a7bd31362fc7af8b70b8b4d65f869c61731800058fb818cc2fd36c8eac714ddd0e568cc85becf5e165cebbdf7b5024d5151bbc75ea1
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"node-domexception@npm:^1.0.0":
|
"node-domexception@npm:^1.0.0":
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
resolution: "node-domexception@npm:1.0.0"
|
resolution: "node-domexception@npm:1.0.0"
|
||||||
@@ -3674,6 +4003,17 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"node-gyp-build@npm:^4.4.0":
|
||||||
|
version: 4.6.0
|
||||||
|
resolution: "node-gyp-build@npm:4.6.0"
|
||||||
|
bin:
|
||||||
|
node-gyp-build: bin.js
|
||||||
|
node-gyp-build-optional: optional.js
|
||||||
|
node-gyp-build-test: build-test.js
|
||||||
|
checksum: 25d78c5ef1f8c24291f4a370c47ba52fcea14f39272041a90a7894cd50d766f7c8cb8fb06c0f42bf6f69b204b49d9be3c8fc344aac09714d5bdb95965499eb15
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"node-gyp@npm:latest":
|
"node-gyp@npm:latest":
|
||||||
version: 9.3.1
|
version: 9.3.1
|
||||||
resolution: "node-gyp@npm:9.3.1"
|
resolution: "node-gyp@npm:9.3.1"
|
||||||
@@ -3997,6 +4337,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"platform@npm:^1.3.3":
|
||||||
|
version: 1.3.6
|
||||||
|
resolution: "platform@npm:1.3.6"
|
||||||
|
checksum: 6f472a09c61d418c7e26c1c16d0bdc029549d512dbec6526216a1e59ec68100d07007d0097dcba69dddad883d6f2a83361b4bdfe0094a3d9a2af24158643d85e
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"prelude-ls@npm:^1.2.1":
|
"prelude-ls@npm:^1.2.1":
|
||||||
version: 1.2.1
|
version: 1.2.1
|
||||||
resolution: "prelude-ls@npm:1.2.1"
|
resolution: "prelude-ls@npm:1.2.1"
|
||||||
@@ -4962,7 +5309,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"typescript@npm:^4.9.5":
|
"typescript@npm:^4.9.3, typescript@npm:^4.9.5":
|
||||||
version: 4.9.5
|
version: 4.9.5
|
||||||
resolution: "typescript@npm:4.9.5"
|
resolution: "typescript@npm:4.9.5"
|
||||||
bin:
|
bin:
|
||||||
@@ -4972,7 +5319,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"typescript@patch:typescript@^4.9.5#~builtin<compat/typescript>":
|
"typescript@patch:typescript@^4.9.3#~builtin<compat/typescript>, typescript@patch:typescript@^4.9.5#~builtin<compat/typescript>":
|
||||||
version: 4.9.5
|
version: 4.9.5
|
||||||
resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=d73830"
|
resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin<compat/typescript>::version=4.9.5&hash=d73830"
|
||||||
bin:
|
bin:
|
||||||
|
|||||||
Reference in New Issue
Block a user