mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-21 18:57:03 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
31f6123a55 | ||
|
|
18a3e3092c | ||
|
|
5ded0f8744 | ||
|
|
4e0f0536fa | ||
|
|
3f081a5577 | ||
|
|
2447d663fa | ||
|
|
8a0afee97a | ||
|
|
3cca68a8f0 | ||
|
|
622cd92a13 | ||
|
|
6d9e6973d5 |
No files matched your search
@@ -0,0 +1,34 @@
|
|||||||
|
name: CD North America Ratings Latest
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
host:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Use node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install Yarn
|
||||||
|
run: npm install --location=global yarn
|
||||||
|
|
||||||
|
- name: Use node_modules cache
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: '**/node_modules'
|
||||||
|
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn
|
||||||
|
|
||||||
|
- name: Generate leaderboard
|
||||||
|
run: GH_TOKEN=${{ secrets.GH_TOKEN }} yarn publish:ratingsleaderboard --region=asia --latest
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
name: CD North America Ratings Leaderboards
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 17 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
host:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Use node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install Yarn
|
||||||
|
run: npm install --location=global yarn
|
||||||
|
|
||||||
|
- name: Use node_modules cache
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: '**/node_modules'
|
||||||
|
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn
|
||||||
|
|
||||||
|
- name: Generate leaderboard
|
||||||
|
run: GH_TOKEN=${{ secrets.GH_TOKEN }} yarn publish:ratingsleaderboard --region=asia
|
||||||
@@ -16,18 +16,14 @@ jobs:
|
|||||||
name: github-pages
|
name: github-pages
|
||||||
url: ${{ steps.deployment.outputs.page_url }}
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
node-version: [18.x]
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Get code
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Use node
|
- name: Use node
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-version }}
|
node-version: 18
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
|
|
||||||
- name: Install Yarn
|
- name: Install Yarn
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
name: CD North America Ratings Latest
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
host:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Use node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install Yarn
|
||||||
|
run: npm install --location=global yarn
|
||||||
|
|
||||||
|
- name: Use node_modules cache
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: '**/node_modules'
|
||||||
|
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn
|
||||||
|
|
||||||
|
- name: Generate leaderboard
|
||||||
|
run: GH_TOKEN=${{ secrets.GH_TOKEN }} yarn publish:ratingsleaderboard --region=eu --latest
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
name: CD North America Ratings Leaderboards
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 23 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
host:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Use node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install Yarn
|
||||||
|
run: npm install --location=global yarn
|
||||||
|
|
||||||
|
- name: Use node_modules cache
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: '**/node_modules'
|
||||||
|
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn
|
||||||
|
|
||||||
|
- name: Generate leaderboard
|
||||||
|
run: GH_TOKEN=${{ secrets.GH_TOKEN }} yarn publish:ratingsleaderboard --region=eu
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
name: Host
|
name: CD Host
|
||||||
|
|
||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
@@ -12,15 +12,12 @@ concurrency:
|
|||||||
jobs:
|
jobs:
|
||||||
host:
|
host:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
node-version: [18.x]
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Use node
|
- name: Use node
|
||||||
uses: actions/setup-node@v2
|
uses: actions/setup-node@v2
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-version }}
|
node-version: 18
|
||||||
|
|
||||||
- name: Download release assets
|
- name: Download release assets
|
||||||
run: |
|
run: |
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
name: CD North America Ratings Latest
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
host:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Use node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install Yarn
|
||||||
|
run: npm install --location=global yarn
|
||||||
|
|
||||||
|
- name: Use node_modules cache
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: '**/node_modules'
|
||||||
|
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn
|
||||||
|
|
||||||
|
- name: Generate leaderboard
|
||||||
|
run: GH_TOKEN=${{ secrets.GH_TOKEN }} yarn publish:ratingsleaderboard --region=na --latest
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
name: CD North America Ratings Leaderboards
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 5 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
host:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Use node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install Yarn
|
||||||
|
run: npm install --location=global yarn
|
||||||
|
|
||||||
|
- name: Use node_modules cache
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: '**/node_modules'
|
||||||
|
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn
|
||||||
|
|
||||||
|
- name: Generate leaderboard
|
||||||
|
run: GH_TOKEN=${{ secrets.GH_TOKEN }} yarn publish:ratingsleaderboard --region=na
|
||||||
@@ -11,18 +11,14 @@ jobs:
|
|||||||
name: Build
|
name: Build
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
node-version: [18.x]
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Get code
|
- name: Checkout
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Use node
|
- name: Use node
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-version }}
|
node-version: 18
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
|
|
||||||
- name: Install Yarn
|
- name: Install Yarn
|
||||||
|
|||||||
+1
-1
@@ -5,8 +5,8 @@ package-lock.json
|
|||||||
/playwright-report/
|
/playwright-report/
|
||||||
/playwright/.cache/
|
/playwright/.cache/
|
||||||
dist/
|
dist/
|
||||||
|
dist.*
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
dist.zip
|
|
||||||
commands.txt
|
commands.txt
|
||||||
/test.*
|
/test.*
|
||||||
/docs/.vitepress/dist
|
/docs/.vitepress/dist
|
||||||
|
|||||||
Vendored
+5
@@ -10,10 +10,13 @@
|
|||||||
"fullstats",
|
"fullstats",
|
||||||
"fuzzysort",
|
"fuzzysort",
|
||||||
"kranvagn",
|
"kranvagn",
|
||||||
|
"Leaderboard",
|
||||||
|
"leaderboards",
|
||||||
"outfile",
|
"outfile",
|
||||||
"ownedtanks",
|
"ownedtanks",
|
||||||
"playerachievements",
|
"playerachievements",
|
||||||
"playerinfo",
|
"playerinfo",
|
||||||
|
"ratingsleaderboard",
|
||||||
"Resvg",
|
"Resvg",
|
||||||
"roboto",
|
"roboto",
|
||||||
"searchclans",
|
"searchclans",
|
||||||
@@ -23,10 +26,12 @@
|
|||||||
"Smri",
|
"Smri",
|
||||||
"startcase",
|
"startcase",
|
||||||
"statsfull",
|
"statsfull",
|
||||||
|
"Stringifying",
|
||||||
"strvk",
|
"strvk",
|
||||||
"tankaverages",
|
"tankaverages",
|
||||||
"tankopedia",
|
"tankopedia",
|
||||||
"tankstats",
|
"tankstats",
|
||||||
|
"tresabhi",
|
||||||
"Unicum",
|
"Unicum",
|
||||||
"Unregistering",
|
"Unregistering",
|
||||||
"vickers",
|
"vickers",
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Blitzkrieg 1.10.1
|
||||||
|
|
||||||
|
This is a bit of an experiment.
|
||||||
|
|
||||||
|
## Technical Changes
|
||||||
|
|
||||||
|
- Every midnight in the Central North American Time, a permanent record of the entire ratings leaderboard will be stored for North America
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# Blitzkrieg 1.10.2
|
||||||
|
|
||||||
|
The experiment in Blitzkrieg `1.10.1` was a bit of a failure so here are a few changes.
|
||||||
|
|
||||||
|
## Fixes
|
||||||
|
|
||||||
|
- North American leaderboards are now saved in the `na` directory instead of `asia`
|
||||||
|
- Dependencies are now installed before the script is ran
|
||||||
|
- Added leaderboards for all regions
|
||||||
|
- All regions now have their own separate cron timings
|
||||||
+4
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "blitzkrieg",
|
"name": "blitzkrieg",
|
||||||
"version": "1.10.0",
|
"version": "1.10.2",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "src/server.ts",
|
"main": "src/server.ts",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
"build:bot": "node scripts/build --build=bot",
|
"build:bot": "node scripts/build --build=bot",
|
||||||
"build:server": "node scripts/build --build=server",
|
"build:server": "node scripts/build --build=server",
|
||||||
"build:docs": "vitepress build docs",
|
"build:docs": "vitepress build docs",
|
||||||
|
"build:ratingsleaderboard": "node scripts/generateRatingsLeaderboard",
|
||||||
"build": "node scripts/build --build=all",
|
"build": "node scripts/build --build=all",
|
||||||
"dev:bot": "yarn build:bot --dev && yarn start:bot",
|
"dev:bot": "yarn build:bot --dev && yarn start:bot",
|
||||||
"dev:server": "yarn build:server --dev && yarn start:server",
|
"dev:server": "yarn build:server --dev && yarn start:server",
|
||||||
@@ -15,6 +16,7 @@
|
|||||||
"start:bot": "node --enable-source-maps --trace-warnings dist/bot.cjs",
|
"start:bot": "node --enable-source-maps --trace-warnings dist/bot.cjs",
|
||||||
"start:server": "node --enable-source-maps --trace-warnings dist/server.cjs",
|
"start:server": "node --enable-source-maps --trace-warnings dist/server.cjs",
|
||||||
"host:docs": "vitepress preview docs",
|
"host:docs": "vitepress preview docs",
|
||||||
|
"publish:ratingsleaderboard": "node scripts/generateRatingsLeaderboard --publish",
|
||||||
"zip": "zip -r dist.zip dist",
|
"zip": "zip -r dist.zip dist",
|
||||||
"lint": "npx tsc",
|
"lint": "npx tsc",
|
||||||
"format": "prettier --write \"**/*.@(json|js|jsx|css|md|ts|tsx|html|xml|yml|gltf)\""
|
"format": "prettier --write \"**/*.@(json|js|jsx|css|md|ts|tsx|html|xml|yml|gltf)\""
|
||||||
@@ -36,6 +38,7 @@
|
|||||||
"vitepress-plugin-auto-sidebar": "^1.1.0"
|
"vitepress-plugin-auto-sidebar": "^1.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@octokit/rest": "^20.0.1",
|
||||||
"@total-typescript/ts-reset": "^0.4.2",
|
"@total-typescript/ts-reset": "^0.4.2",
|
||||||
"@types/escape-html": "^1.0.2",
|
"@types/escape-html": "^1.0.2",
|
||||||
"@types/express": "^4.17.17",
|
"@types/express": "^4.17.17",
|
||||||
|
|||||||
+12
-12
@@ -4,22 +4,22 @@ import { argv } from 'process';
|
|||||||
|
|
||||||
const isProd = !argv.includes('--dev');
|
const isProd = !argv.includes('--dev');
|
||||||
const buildAll = argv.includes('--build=all');
|
const buildAll = argv.includes('--build=all');
|
||||||
const buildBot = argv.includes('--build=bot') | buildAll;
|
const buildBot = argv.includes('--build=bot') || buildAll;
|
||||||
const buildServer = argv.includes('--build=server') | buildAll;
|
const buildServer = argv.includes('--build=server') || buildAll;
|
||||||
|
|
||||||
if (isProd) {
|
if (isProd) {
|
||||||
// only remove in production to ensure no time is wasted in dev
|
// only remove in production to ensure no time is wasted in dev
|
||||||
console.log('🟡 Removing dist...');
|
console.log('Removing dist...');
|
||||||
await rm('dist', { recursive: true, force: true });
|
await rm('dist', { recursive: true, force: true });
|
||||||
console.log('✅ Dist removed');
|
console.log('Dist removed');
|
||||||
|
|
||||||
console.log('🟡 Creating dist...');
|
console.log('Creating dist...');
|
||||||
await mkdir('dist');
|
await mkdir('dist');
|
||||||
console.log('✅ Dist created');
|
console.log('Dist created');
|
||||||
|
|
||||||
console.log('🟡 Copying package.json...');
|
console.log('Copying package.json...');
|
||||||
copyFile('package.dist.json', 'dist/package.json').then(() =>
|
copyFile('package.dist.json', 'dist/package.json').then(() =>
|
||||||
console.log('✅ package.json copied'),
|
console.log('package.json copied'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,25 +40,25 @@ const commonOptions = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (buildBot) {
|
if (buildBot) {
|
||||||
console.log('🟡 Building bot...');
|
console.log('Building bot...');
|
||||||
build({
|
build({
|
||||||
...commonOptions,
|
...commonOptions,
|
||||||
|
|
||||||
entryPoints: ['src/bot.ts'],
|
entryPoints: ['src/bot.ts'],
|
||||||
outfile: 'dist/bot.cjs',
|
outfile: 'dist/bot.cjs',
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
console.log('✅ Bot built');
|
console.log('Bot built');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buildServer) {
|
if (buildServer) {
|
||||||
console.log('🟡 Building server...');
|
console.log('Building server...');
|
||||||
build({
|
build({
|
||||||
...commonOptions,
|
...commonOptions,
|
||||||
|
|
||||||
entryPoints: ['src/server.ts'],
|
entryPoints: ['src/server.ts'],
|
||||||
outfile: 'dist/server.cjs',
|
outfile: 'dist/server.cjs',
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
console.log('✅ Server built');
|
console.log('Server built');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
export default async function commitMultipleFiles(
|
||||||
|
octokit,
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
branch,
|
||||||
|
message,
|
||||||
|
changes,
|
||||||
|
) {
|
||||||
|
// Get the latest commit SHA on the specified branch
|
||||||
|
const { data: refData } = await octokit.git.getRef({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
ref: `heads/${branch}`,
|
||||||
|
});
|
||||||
|
const latestCommitSha = refData.object.sha;
|
||||||
|
|
||||||
|
// Get the tree SHA for the latest commit
|
||||||
|
const { data: commitData } = await octokit.git.getCommit({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
commit_sha: latestCommitSha,
|
||||||
|
});
|
||||||
|
const treeSha = commitData.tree.sha;
|
||||||
|
|
||||||
|
// Create blobs for each file
|
||||||
|
const blobs = await Promise.all(
|
||||||
|
changes.map(async (change) => {
|
||||||
|
const { data: blobData } = await octokit.git.createBlob({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
content: change.content,
|
||||||
|
encoding: 'utf-8',
|
||||||
|
});
|
||||||
|
return {
|
||||||
|
sha: blobData.sha,
|
||||||
|
path: change.path,
|
||||||
|
mode: '100644',
|
||||||
|
type: 'blob',
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Create a new tree with the new blobs
|
||||||
|
const { data: treeData } = await octokit.git.createTree({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
base_tree: treeSha,
|
||||||
|
tree: blobs,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Create a new commit with the new tree
|
||||||
|
const { data: newCommitData } = await octokit.git.createCommit({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
message,
|
||||||
|
tree: treeData.sha,
|
||||||
|
parents: [latestCommitSha],
|
||||||
|
});
|
||||||
|
|
||||||
|
// Update the branch reference to point to the new commit
|
||||||
|
await octokit.git.updateRef({
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
ref: `heads/${branch}`,
|
||||||
|
sha: newCommitData.sha,
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
import { Octokit } from '@octokit/rest';
|
||||||
|
import { rm, writeFile } from 'fs/promises';
|
||||||
|
import { argv, env } from 'process';
|
||||||
|
import commitMultipleFiles from './commitMultipleFiles.js';
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Central North American Time (UTC-5): use 0 5 * * *.
|
||||||
|
* Central European Time (UTC+1): use 0 23 * * *.
|
||||||
|
* Central Asia Standard Time (UTC+7): use 0 17 * * *.
|
||||||
|
*
|
||||||
|
* :region/ratings/:season/info.json: season info like rewards, start & end time, etc.
|
||||||
|
* :region/ratings/:season/latest.json: the absolute latest leaderboard recorded at UTC+0 midnight
|
||||||
|
* :region/ratings/:season/leaderboards/:time.json: collection of all recorded leaderboards at local midnights
|
||||||
|
*/
|
||||||
|
|
||||||
|
const publish = argv.includes('--publish');
|
||||||
|
const latest = argv.includes('--latest');
|
||||||
|
const server = argv.find((arg) => arg.startsWith('--region='))?.split('=')[1];
|
||||||
|
|
||||||
|
if (!server) throw new Error('Region parameter not specified');
|
||||||
|
|
||||||
|
const NEIGHBORS = 1000;
|
||||||
|
const PLAYERS = await fetch(
|
||||||
|
`https://${server}.wotblitz.com/en/api/rating-leaderboards/season/`,
|
||||||
|
)
|
||||||
|
.then((response) => response.json())
|
||||||
|
.then((data) => data.count);
|
||||||
|
|
||||||
|
const players = {};
|
||||||
|
const leaderboard = [];
|
||||||
|
let registered = 0;
|
||||||
|
|
||||||
|
async function branchFromPlayer(id) {
|
||||||
|
const { neighbors } = await fetch(
|
||||||
|
`https://${server}.wotblitz.com/en/api/rating-leaderboards/user/${id}/?neighbors=${NEIGHBORS}`,
|
||||||
|
).then((response) => response.json());
|
||||||
|
|
||||||
|
const firstPlayer = neighbors[0];
|
||||||
|
const lastPlayer = neighbors[neighbors.length - 1];
|
||||||
|
|
||||||
|
const branches = [];
|
||||||
|
if (!players[firstPlayer.number])
|
||||||
|
branches.push(branchFromPlayer(firstPlayer.spa_id));
|
||||||
|
if (!players[lastPlayer.number])
|
||||||
|
branches.push(branchFromPlayer(lastPlayer.spa_id));
|
||||||
|
|
||||||
|
neighbors.forEach((neighbor) => {
|
||||||
|
if (players[neighbor.number]) return;
|
||||||
|
|
||||||
|
players[neighbor.number] = neighbor;
|
||||||
|
registered++;
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(
|
||||||
|
`Registered ${registered} / ${PLAYERS} (${(
|
||||||
|
(registered / PLAYERS) *
|
||||||
|
100
|
||||||
|
).toFixed(2)}%)`,
|
||||||
|
);
|
||||||
|
|
||||||
|
await Promise.all(branches);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function branchFromLeague(id) {
|
||||||
|
const { result } = await fetch(
|
||||||
|
`https://${server}.wotblitz.com/en/api/rating-leaderboards/league/${id}/top/`,
|
||||||
|
).then((response) => response.json());
|
||||||
|
|
||||||
|
const firstPlayer = result[0];
|
||||||
|
const lastPlayer = result[result.length - 1];
|
||||||
|
|
||||||
|
await Promise.all([
|
||||||
|
branchFromPlayer(firstPlayer.spa_id),
|
||||||
|
branchFromPlayer(lastPlayer.spa_id),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Branching form leagues...');
|
||||||
|
await Promise.all([
|
||||||
|
branchFromLeague(0),
|
||||||
|
branchFromLeague(1),
|
||||||
|
branchFromLeague(2),
|
||||||
|
branchFromLeague(3),
|
||||||
|
branchFromLeague(4),
|
||||||
|
]);
|
||||||
|
|
||||||
|
console.log('Converting to an array...');
|
||||||
|
for (let index = 0; index < PLAYERS; index++) {
|
||||||
|
leaderboard[index] = players[index + 1];
|
||||||
|
if (!leaderboard[index]) console.warn(`${index} had no player`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const leaderboardJSON = JSON.stringify(leaderboard);
|
||||||
|
|
||||||
|
if (publish) {
|
||||||
|
const octokit = new Octokit({ auth: env.GH_TOKEN });
|
||||||
|
|
||||||
|
const info = await fetch(
|
||||||
|
`https://${server}.wotblitz.com/en/api/rating-leaderboards/season/`,
|
||||||
|
).then((response) => response.json());
|
||||||
|
const time = Math.round(Date.now() / 1000);
|
||||||
|
const normalizedServer = server === 'na' ? 'com' : server;
|
||||||
|
|
||||||
|
const infoPath = `${normalizedServer}/ratings/${info.current_season}/info.json`;
|
||||||
|
const leaderboardPath = `${normalizedServer}/ratings/${info.current_season}/${
|
||||||
|
latest ? 'latest.json' : `leaderboards/${time}.json`
|
||||||
|
}`;
|
||||||
|
const infoJSON = JSON.stringify(info);
|
||||||
|
|
||||||
|
console.log(`Publishing to season ${info.current_season}...`);
|
||||||
|
commitMultipleFiles(
|
||||||
|
octokit,
|
||||||
|
'tresabhi',
|
||||||
|
'blitzkrieg-db',
|
||||||
|
'main',
|
||||||
|
`${info.current_season}/${time}`,
|
||||||
|
[
|
||||||
|
{ path: infoPath, content: infoJSON },
|
||||||
|
{ path: leaderboardPath, content: leaderboardJSON },
|
||||||
|
],
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
console.log('Writing to disk...');
|
||||||
|
await rm('dist.json', { force: true });
|
||||||
|
await writeFile('dist.json', leaderboardJSON);
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@ import NoData, { NoDataType } from '../components/NoData';
|
|||||||
import PoweredBy, { PoweredByType } from '../components/PoweredBy';
|
import PoweredBy, { PoweredByType } from '../components/PoweredBy';
|
||||||
import TitleBar from '../components/TitleBar';
|
import TitleBar from '../components/TitleBar';
|
||||||
import Wrapper from '../components/Wrapper';
|
import Wrapper from '../components/Wrapper';
|
||||||
import { BLITZ_SERVERS } from '../constants/servers';
|
import { REGION_DOMAIN_NAMES } from '../constants/regions';
|
||||||
import getBlitzClan from '../core/blitz/getBlitzClan';
|
import getBlitzClan from '../core/blitz/getBlitzClan';
|
||||||
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
||||||
import addClanChoices from '../core/discord/addClanChoices';
|
import addClanChoices from '../core/discord/addClanChoices';
|
||||||
@@ -72,7 +72,7 @@ export const inactiveCommand: CommandRegistry = {
|
|||||||
nameDiscriminator="(Inactivity)"
|
nameDiscriminator="(Inactivity)"
|
||||||
image={`https://wotblitz-gc.gcdn.co/icons/clanEmblems1x/clan-icon-v2-${clanData.emblem_set_id}.png`}
|
image={`https://wotblitz-gc.gcdn.co/icons/clanEmblems1x/clan-icon-v2-${clanData.emblem_set_id}.png`}
|
||||||
description={`${threshold}+ Days • ${new Date().toDateString()} • ${
|
description={`${threshold}+ Days • ${new Date().toDateString()} • ${
|
||||||
BLITZ_SERVERS[server]
|
REGION_DOMAIN_NAMES[server]
|
||||||
}`}
|
}`}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import PoweredBy, { PoweredByType } from '../components/PoweredBy';
|
|||||||
import * as Tanks from '../components/Tanks';
|
import * as Tanks from '../components/Tanks';
|
||||||
import TitleBar from '../components/TitleBar';
|
import TitleBar from '../components/TitleBar';
|
||||||
import Wrapper from '../components/Wrapper';
|
import Wrapper from '../components/Wrapper';
|
||||||
import { BLITZ_SERVERS } from '../constants/servers';
|
import { REGION_DOMAIN_NAMES } from '../constants/regions';
|
||||||
import getTankStats from '../core/blitz/getTankStats';
|
import getTankStats from '../core/blitz/getTankStats';
|
||||||
import getTreeType from '../core/blitz/getTreeType';
|
import getTreeType from '../core/blitz/getTreeType';
|
||||||
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
||||||
@@ -105,7 +105,7 @@ export const ownedTanksCommand: CommandRegistry = {
|
|||||||
: undefined
|
: undefined
|
||||||
}
|
}
|
||||||
description={`Owned tanks • ${new Date().toDateString()} • ${
|
description={`Owned tanks • ${new Date().toDateString()} • ${
|
||||||
BLITZ_SERVERS[server]
|
REGION_DOMAIN_NAMES[server]
|
||||||
}`}
|
}`}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { SlashCommandBuilder } from 'discord.js';
|
import { SlashCommandBuilder } from 'discord.js';
|
||||||
import markdownEscape from 'markdown-escape';
|
import markdownEscape from 'markdown-escape';
|
||||||
import { BLITZ_SERVERS, BlitzServer } from '../constants/servers';
|
import { REGION_DOMAIN_NAMES, RegionDomain } from '../constants/regions';
|
||||||
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
||||||
import addClanChoices from '../core/discord/addClanChoices';
|
import addClanChoices from '../core/discord/addClanChoices';
|
||||||
import addServerChoices from '../core/discord/addServerChoices';
|
import addServerChoices from '../core/discord/addServerChoices';
|
||||||
@@ -28,7 +28,7 @@ export const searchClansCommand: CommandRegistry = {
|
|||||||
),
|
),
|
||||||
|
|
||||||
async handler(interaction) {
|
async handler(interaction) {
|
||||||
const server = interaction.options.getString('server') as BlitzServer;
|
const server = interaction.options.getString('server') as RegionDomain;
|
||||||
const clan = interaction.options.getString('clan')!;
|
const clan = interaction.options.getString('clan')!;
|
||||||
const limit = interaction.options.getInteger('limit') ?? 25;
|
const limit = interaction.options.getInteger('limit') ?? 25;
|
||||||
const clanList = await getWargamingResponse<ClanList>(
|
const clanList = await getWargamingResponse<ClanList>(
|
||||||
@@ -36,7 +36,9 @@ export const searchClansCommand: CommandRegistry = {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return embedInfo(
|
return embedInfo(
|
||||||
`Clan search for "${markdownEscape(clan)}" in ${BLITZ_SERVERS[server]}`,
|
`Clan search for "${markdownEscape(clan)}" in ${
|
||||||
|
REGION_DOMAIN_NAMES[server]
|
||||||
|
}`,
|
||||||
clanList.length === 0
|
clanList.length === 0
|
||||||
? 'No clans found.'
|
? 'No clans found.'
|
||||||
: `\`\`\`\n${clanList
|
: `\`\`\`\n${clanList
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { SlashCommandBuilder } from 'discord.js';
|
import { SlashCommandBuilder } from 'discord.js';
|
||||||
import markdownEscape from 'markdown-escape';
|
import markdownEscape from 'markdown-escape';
|
||||||
import { BLITZ_SERVERS, BlitzServer } from '../constants/servers';
|
import { REGION_DOMAIN_NAMES, RegionDomain } from '../constants/regions';
|
||||||
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
||||||
import { usernamePattern } from '../core/blitz/listPlayers';
|
import { usernamePattern } from '../core/blitz/listPlayers';
|
||||||
import addServerChoices from '../core/discord/addServerChoices';
|
import addServerChoices from '../core/discord/addServerChoices';
|
||||||
@@ -31,7 +31,7 @@ export const searchPlayersCommand: CommandRegistry = {
|
|||||||
),
|
),
|
||||||
|
|
||||||
async handler(interaction) {
|
async handler(interaction) {
|
||||||
const server = interaction.options.getString('server') as BlitzServer;
|
const server = interaction.options.getString('server') as RegionDomain;
|
||||||
const name = interaction.options.getString('username')!;
|
const name = interaction.options.getString('username')!;
|
||||||
const limit = interaction.options.getInteger('limit') ?? 25;
|
const limit = interaction.options.getInteger('limit') ?? 25;
|
||||||
const trimmedSearch = name.trim();
|
const trimmedSearch = name.trim();
|
||||||
@@ -44,7 +44,9 @@ export const searchPlayersCommand: CommandRegistry = {
|
|||||||
: [];
|
: [];
|
||||||
|
|
||||||
return embedInfo(
|
return embedInfo(
|
||||||
`Player search for "${markdownEscape(name)}" in ${BLITZ_SERVERS[server]}`,
|
`Player search for "${markdownEscape(name)}" in ${
|
||||||
|
REGION_DOMAIN_NAMES[server]
|
||||||
|
}`,
|
||||||
`\`\`\`${
|
`\`\`\`${
|
||||||
players.length === 0
|
players.length === 0
|
||||||
? 'No players found.'
|
? 'No players found.'
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
export type RegionDomain = 'com' | 'eu' | 'asia';
|
||||||
|
export type RegionSubdomain = 'na' | 'eu' | 'asia';
|
||||||
|
|
||||||
|
export const REGION_DOMAIN_NAMES: Record<RegionDomain, string> = {
|
||||||
|
com: 'North America',
|
||||||
|
eu: 'Europe',
|
||||||
|
asia: 'Asia',
|
||||||
|
};
|
||||||
|
|
||||||
|
export const REGION_SUBDOMAIN_NAMES: Record<RegionSubdomain, string> = {
|
||||||
|
na: 'North America',
|
||||||
|
eu: 'Europe',
|
||||||
|
asia: 'Asia',
|
||||||
|
};
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
export type BlitzServer = 'com' | 'eu' | 'asia';
|
|
||||||
|
|
||||||
export const BLITZ_SERVERS: Record<BlitzServer, string> = {
|
|
||||||
com: 'North America',
|
|
||||||
eu: 'Europe',
|
|
||||||
asia: 'Asia',
|
|
||||||
};
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
import { serverAndIdPattern } from '../discord/resolvePlayerFromCommand';
|
import { serverAndIdPattern } from '../discord/resolvePlayerFromCommand';
|
||||||
import throwError from '../node/throwError';
|
import throwError from '../node/throwError';
|
||||||
import listClans from './listClans';
|
import listClans from './listClans';
|
||||||
@@ -6,7 +6,7 @@ import listClans from './listClans';
|
|||||||
export default async function getBlitzClan(clan: string) {
|
export default async function getBlitzClan(clan: string) {
|
||||||
if (serverAndIdPattern.test(clan)) {
|
if (serverAndIdPattern.test(clan)) {
|
||||||
const [server, accountId] = clan.split('/');
|
const [server, accountId] = clan.split('/');
|
||||||
return { server: server as BlitzServer, id: Number(accountId) };
|
return { server: server as RegionDomain, id: Number(accountId) };
|
||||||
} else {
|
} else {
|
||||||
const accounts = await listClans(clan);
|
const accounts = await listClans(clan);
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { BLITZ_SERVERS, BlitzServer } from '../../constants/servers';
|
import { REGION_DOMAIN_NAMES, RegionDomain } from '../../constants/regions';
|
||||||
import { TanksStats } from '../../types/tanksStats';
|
import { TanksStats } from '../../types/tanksStats';
|
||||||
import { WARGAMING_APPLICATION_ID } from '../node/arguments';
|
import { WARGAMING_APPLICATION_ID } from '../node/arguments';
|
||||||
import throwError from '../node/throwError';
|
import throwError from '../node/throwError';
|
||||||
import getWargamingResponse from './getWargamingResponse';
|
import getWargamingResponse from './getWargamingResponse';
|
||||||
|
|
||||||
export default async function getTankStats(server: BlitzServer, id: number) {
|
export default async function getTankStats(server: RegionDomain, id: number) {
|
||||||
const tankStats = await getWargamingResponse<TanksStats>(
|
const tankStats = await getWargamingResponse<TanksStats>(
|
||||||
`https://api.wotblitz.${server}/wotb/tanks/stats/?application_id=${WARGAMING_APPLICATION_ID}&account_id=${id}`,
|
`https://api.wotblitz.${server}/wotb/tanks/stats/?application_id=${WARGAMING_APPLICATION_ID}&account_id=${id}`,
|
||||||
);
|
);
|
||||||
@@ -12,7 +12,7 @@ export default async function getTankStats(server: BlitzServer, id: number) {
|
|||||||
if (tankStats[id] === null) {
|
if (tankStats[id] === null) {
|
||||||
throw throwError(
|
throw throwError(
|
||||||
'No tank stats available',
|
'No tank stats available',
|
||||||
`Wargaming says there is no tank stats for this account. This account may not have any battles/tanks or exist in the ${BLITZ_SERVERS[server]} server.`,
|
`Wargaming says there is no tank stats for this account. This account may not have any battles/tanks or exist in the ${REGION_DOMAIN_NAMES[server]} server.`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
import { Clan, ClanList } from '../../types/clanList';
|
import { Clan, ClanList } from '../../types/clanList';
|
||||||
import { WARGAMING_APPLICATION_ID } from '../node/arguments';
|
import { WARGAMING_APPLICATION_ID } from '../node/arguments';
|
||||||
import getWargamingResponse from './getWargamingResponse';
|
import getWargamingResponse from './getWargamingResponse';
|
||||||
@@ -21,7 +21,7 @@ export default async function listClans(search: string, limit = 9) {
|
|||||||
value &&
|
value &&
|
||||||
value.map((account) => ({
|
value.map((account) => ({
|
||||||
...account,
|
...account,
|
||||||
server: 'com' as BlitzServer,
|
server: 'com' as RegionDomain,
|
||||||
})),
|
})),
|
||||||
),
|
),
|
||||||
getWargamingResponse<ClanList>(
|
getWargamingResponse<ClanList>(
|
||||||
@@ -31,7 +31,7 @@ export default async function listClans(search: string, limit = 9) {
|
|||||||
value &&
|
value &&
|
||||||
value.map((account) => ({
|
value.map((account) => ({
|
||||||
...account,
|
...account,
|
||||||
server: 'eu' as BlitzServer,
|
server: 'eu' as RegionDomain,
|
||||||
})),
|
})),
|
||||||
),
|
),
|
||||||
getWargamingResponse<ClanList>(
|
getWargamingResponse<ClanList>(
|
||||||
@@ -41,7 +41,7 @@ export default async function listClans(search: string, limit = 9) {
|
|||||||
value &&
|
value &&
|
||||||
value.map((account) => ({
|
value.map((account) => ({
|
||||||
...account,
|
...account,
|
||||||
server: 'asia' as BlitzServer,
|
server: 'asia' as RegionDomain,
|
||||||
})),
|
})),
|
||||||
),
|
),
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
import { Account, AccountList } from '../../types/accountList';
|
import { Account, AccountList } from '../../types/accountList';
|
||||||
import { WARGAMING_APPLICATION_ID } from '../node/arguments';
|
import { WARGAMING_APPLICATION_ID } from '../node/arguments';
|
||||||
import getWargamingResponse from './getWargamingResponse';
|
import getWargamingResponse from './getWargamingResponse';
|
||||||
@@ -25,7 +25,7 @@ export default async function listPlayers(search: string, limit = 9) {
|
|||||||
value &&
|
value &&
|
||||||
value.map((account) => ({
|
value.map((account) => ({
|
||||||
...account,
|
...account,
|
||||||
server: 'com' as BlitzServer,
|
server: 'com' as RegionDomain,
|
||||||
})),
|
})),
|
||||||
),
|
),
|
||||||
getWargamingResponse<AccountList>(
|
getWargamingResponse<AccountList>(
|
||||||
@@ -35,7 +35,7 @@ export default async function listPlayers(search: string, limit = 9) {
|
|||||||
value &&
|
value &&
|
||||||
value.map((account) => ({
|
value.map((account) => ({
|
||||||
...account,
|
...account,
|
||||||
server: 'eu' as BlitzServer,
|
server: 'eu' as RegionDomain,
|
||||||
})),
|
})),
|
||||||
),
|
),
|
||||||
getWargamingResponse<AccountList>(
|
getWargamingResponse<AccountList>(
|
||||||
@@ -45,7 +45,7 @@ export default async function listPlayers(search: string, limit = 9) {
|
|||||||
value &&
|
value &&
|
||||||
value.map((account) => ({
|
value.map((account) => ({
|
||||||
...account,
|
...account,
|
||||||
server: 'asia' as BlitzServer,
|
server: 'asia' as RegionDomain,
|
||||||
})),
|
})),
|
||||||
),
|
),
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
import { AllStats } from '../../types/accountInfo';
|
import { AllStats } from '../../types/accountInfo';
|
||||||
import getTankHistories, {
|
import getTankHistories, {
|
||||||
TankHistories,
|
TankHistories,
|
||||||
@@ -35,7 +35,7 @@ export const emptyTankHistoryNode: TankHistoryRaw = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default async function getDiffedTankStats(
|
export default async function getDiffedTankStats(
|
||||||
server: BlitzServer,
|
server: RegionDomain,
|
||||||
id: number,
|
id: number,
|
||||||
start: number,
|
start: number,
|
||||||
end: number,
|
end: number,
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
import { Period } from '../discord/addPeriodSubCommands';
|
import { Period } from '../discord/addPeriodSubCommands';
|
||||||
import getTimeDaysAgo from './getTimeDaysAgo';
|
import getTimeDaysAgo from './getTimeDaysAgo';
|
||||||
|
|
||||||
export default function getPeriodStart(
|
export default function getPeriodStart(
|
||||||
server: BlitzServer,
|
server: RegionDomain,
|
||||||
period: Exclude<Period, 'custom'>,
|
period: Exclude<Period, 'custom'>,
|
||||||
) {
|
) {
|
||||||
if (period === 'career') {
|
if (period === 'career') {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
import { AccountInfo, AllStats } from '../../types/accountInfo';
|
import { AccountInfo, AllStats } from '../../types/accountInfo';
|
||||||
import {
|
import {
|
||||||
GetHistoriesOptions,
|
GetHistoriesOptions,
|
||||||
@@ -25,13 +25,13 @@ export interface PlayerHistoryRaw {
|
|||||||
account_id: number;
|
account_id: number;
|
||||||
[key: string]: number;
|
[key: string]: number;
|
||||||
};
|
};
|
||||||
region: BlitzServer;
|
region: RegionDomain;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type PlayerHistoriesRaw = PlayerHistoryRaw[];
|
export type PlayerHistoriesRaw = PlayerHistoryRaw[];
|
||||||
|
|
||||||
export default async function getPlayerHistories(
|
export default async function getPlayerHistories(
|
||||||
server: BlitzServer,
|
server: RegionDomain,
|
||||||
id: number,
|
id: number,
|
||||||
options?: Partial<GetHistoriesOptions>,
|
options?: Partial<GetHistoriesOptions>,
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
import {
|
import {
|
||||||
GetHistoriesOptions,
|
GetHistoriesOptions,
|
||||||
Histories,
|
Histories,
|
||||||
@@ -32,7 +32,7 @@ export const getTankHistoriesDefaultOptions: GetTankHistoriesOptions = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default async function getTankHistories(
|
export default async function getTankHistories(
|
||||||
server: BlitzServer,
|
server: RegionDomain,
|
||||||
id: number,
|
id: number,
|
||||||
options?: Partial<GetTankHistoriesOptions>,
|
options?: Partial<GetTankHistoriesOptions>,
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
|
|
||||||
export const TIME_ZONE_MAPPINGS: Record<BlitzServer, number> = {
|
export const TIME_ZONE_MAPPINGS: Record<RegionDomain, number> = {
|
||||||
com: -5, // Central North American Time
|
com: -5, // Central North American Time
|
||||||
eu: +1, // Central European Time
|
eu: +1, // Central European Time
|
||||||
asia: +7, // Central Asia Standard Time
|
asia: +7, // Central Asia Standard Time
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function getTimeDaysAgo(server: BlitzServer, daysAgo: number) {
|
export default function getTimeDaysAgo(server: RegionDomain, daysAgo: number) {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
if (daysAgo === 0) now.getTime() / 1000;
|
if (daysAgo === 0) now.getTime() / 1000;
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import { SlashCommandStringOption } from 'discord.js';
|
import { SlashCommandStringOption } from 'discord.js';
|
||||||
import { BLITZ_SERVERS } from '../../constants/servers';
|
import { REGION_DOMAIN_NAMES } from '../../constants/regions';
|
||||||
|
|
||||||
export default function addServerChoices(option: SlashCommandStringOption) {
|
export default function addServerChoices(option: SlashCommandStringOption) {
|
||||||
return option
|
return option
|
||||||
.setName('server')
|
.setName('server')
|
||||||
.setDescription('The Blitz server you are in')
|
.setDescription('The Blitz server you are in')
|
||||||
.addChoices(
|
.addChoices(
|
||||||
{ name: BLITZ_SERVERS.com, value: 'com' },
|
{ name: REGION_DOMAIN_NAMES.com, value: 'com' },
|
||||||
{ name: BLITZ_SERVERS.eu, value: 'eu' },
|
{ name: REGION_DOMAIN_NAMES.eu, value: 'eu' },
|
||||||
{ name: BLITZ_SERVERS.asia, value: 'asia' },
|
{ name: REGION_DOMAIN_NAMES.asia, value: 'asia' },
|
||||||
)
|
)
|
||||||
.setRequired(true);
|
.setRequired(true);
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@ import {
|
|||||||
AutocompleteInteraction,
|
AutocompleteInteraction,
|
||||||
CacheType,
|
CacheType,
|
||||||
} from 'discord.js';
|
} from 'discord.js';
|
||||||
import { BLITZ_SERVERS } from '../../constants/servers';
|
import { REGION_DOMAIN_NAMES } from '../../constants/regions';
|
||||||
import listClans from '../blitz/listClans';
|
import listClans from '../blitz/listClans';
|
||||||
|
|
||||||
export default async function autocompleteClan(
|
export default async function autocompleteClan(
|
||||||
@@ -18,7 +18,7 @@ export default async function autocompleteClan(
|
|||||||
? players.map(
|
? players.map(
|
||||||
(player) =>
|
(player) =>
|
||||||
({
|
({
|
||||||
name: `${player.name} (${BLITZ_SERVERS[player.server]})`,
|
name: `${player.name} (${REGION_DOMAIN_NAMES[player.server]})`,
|
||||||
value: `${player.server}/${player.clan_id}`,
|
value: `${player.server}/${player.clan_id}`,
|
||||||
}) satisfies ApplicationCommandOptionChoiceData<string>,
|
}) satisfies ApplicationCommandOptionChoiceData<string>,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import {
|
|||||||
AutocompleteInteraction,
|
AutocompleteInteraction,
|
||||||
CacheType,
|
CacheType,
|
||||||
} from 'discord.js';
|
} from 'discord.js';
|
||||||
import { BLITZ_SERVERS } from '../../constants/servers';
|
import { REGION_DOMAIN_NAMES } from '../../constants/regions';
|
||||||
import listPlayers from '../blitz/listPlayers';
|
import listPlayers from '../blitz/listPlayers';
|
||||||
|
|
||||||
export default async function autocompleteUsername(
|
export default async function autocompleteUsername(
|
||||||
@@ -19,7 +19,9 @@ export default async function autocompleteUsername(
|
|||||||
? players.map(
|
? players.map(
|
||||||
(player) =>
|
(player) =>
|
||||||
({
|
({
|
||||||
name: `${player.nickname} (${BLITZ_SERVERS[player.server]})`,
|
name: `${player.nickname} (${
|
||||||
|
REGION_DOMAIN_NAMES[player.server]
|
||||||
|
})`,
|
||||||
value: `${player.server}/${player.account_id}`,
|
value: `${player.server}/${player.account_id}`,
|
||||||
}) satisfies ApplicationCommandOptionChoiceData<string>,
|
}) satisfies ApplicationCommandOptionChoiceData<string>,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { ButtonInteraction, CacheType } from 'discord.js';
|
import { ButtonInteraction, CacheType } from 'discord.js';
|
||||||
import { CYCLIC_API } from '../../constants/cyclic';
|
import { CYCLIC_API } from '../../constants/cyclic';
|
||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
import resolvePeriodFromURL from '../express/resolvePeriodFromURL';
|
import resolvePeriodFromURL from '../express/resolvePeriodFromURL';
|
||||||
|
|
||||||
export default function resolvePeriodFromButton(
|
export default function resolvePeriodFromButton(
|
||||||
server: BlitzServer,
|
server: RegionDomain,
|
||||||
interaction: ButtonInteraction<CacheType>,
|
interaction: ButtonInteraction<CacheType>,
|
||||||
) {
|
) {
|
||||||
return resolvePeriodFromURL(server, `${CYCLIC_API}/${interaction.customId}`);
|
return resolvePeriodFromURL(server, `${CYCLIC_API}/${interaction.customId}`);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { CacheType, ChatInputCommandInteraction } from 'discord.js';
|
import { CacheType, ChatInputCommandInteraction } from 'discord.js';
|
||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
import getPeriodNow from '../blitzstars/getPeriodNow';
|
import getPeriodNow from '../blitzstars/getPeriodNow';
|
||||||
import getPeriodStart from '../blitzstars/getPeriodStart';
|
import getPeriodStart from '../blitzstars/getPeriodStart';
|
||||||
import getTimeDaysAgo from '../blitzstars/getTimeDaysAgo';
|
import getTimeDaysAgo from '../blitzstars/getTimeDaysAgo';
|
||||||
@@ -31,7 +31,7 @@ export interface ResolvedPeriod {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default function resolvePeriodFromCommand(
|
export default function resolvePeriodFromCommand(
|
||||||
server: BlitzServer,
|
server: RegionDomain,
|
||||||
interaction: ChatInputCommandInteraction<CacheType>,
|
interaction: ChatInputCommandInteraction<CacheType>,
|
||||||
) {
|
) {
|
||||||
let statsName: string;
|
let statsName: string;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { CacheType, ChatInputCommandInteraction } from 'discord.js';
|
import { CacheType, ChatInputCommandInteraction } from 'discord.js';
|
||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
import listPlayers, {
|
import listPlayers, {
|
||||||
usernamePatternWithoutPosition,
|
usernamePatternWithoutPosition,
|
||||||
} from '../blitz/listPlayers';
|
} from '../blitz/listPlayers';
|
||||||
@@ -8,7 +8,7 @@ import throwError from '../node/throwError';
|
|||||||
export const serverAndIdPattern = /(com|eu|asia)\/[0-9]+/;
|
export const serverAndIdPattern = /(com|eu|asia)\/[0-9]+/;
|
||||||
|
|
||||||
export interface ResolvedPlayer {
|
export interface ResolvedPlayer {
|
||||||
server: BlitzServer;
|
server: RegionDomain;
|
||||||
id: number;
|
id: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@ export default async function resolvePlayerFromCommand(
|
|||||||
if (serverAndIdPattern.test(username)) {
|
if (serverAndIdPattern.test(username)) {
|
||||||
const [server, accountId] = username.split('/');
|
const [server, accountId] = username.split('/');
|
||||||
return {
|
return {
|
||||||
server: server as BlitzServer,
|
server: server as RegionDomain,
|
||||||
id: Number(accountId),
|
id: Number(accountId),
|
||||||
} satisfies ResolvedPlayer;
|
} satisfies ResolvedPlayer;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { Request } from 'express';
|
import { Request } from 'express';
|
||||||
import { CYCLIC_API } from '../../constants/cyclic';
|
import { CYCLIC_API } from '../../constants/cyclic';
|
||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
import resolvePeriodFromURL from './resolvePeriodFromURL';
|
import resolvePeriodFromURL from './resolvePeriodFromURL';
|
||||||
|
|
||||||
export default function resolvePeriodFromRequest(
|
export default function resolvePeriodFromRequest(
|
||||||
server: BlitzServer,
|
server: RegionDomain,
|
||||||
request: Request,
|
request: Request,
|
||||||
) {
|
) {
|
||||||
return resolvePeriodFromURL(server, `${CYCLIC_API}${request.path}`);
|
return resolvePeriodFromURL(server, `${CYCLIC_API}${request.path}`);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
import getPeriodNow from '../blitzstars/getPeriodNow';
|
import getPeriodNow from '../blitzstars/getPeriodNow';
|
||||||
import getPeriodStart from '../blitzstars/getPeriodStart';
|
import getPeriodStart from '../blitzstars/getPeriodStart';
|
||||||
import getTimeDaysAgo from '../blitzstars/getTimeDaysAgo';
|
import getTimeDaysAgo from '../blitzstars/getTimeDaysAgo';
|
||||||
@@ -10,7 +10,7 @@ import {
|
|||||||
} from '../discord/resolvePeriodFromCommand';
|
} from '../discord/resolvePeriodFromCommand';
|
||||||
|
|
||||||
export default function resolvePeriodFromURL(
|
export default function resolvePeriodFromURL(
|
||||||
server: BlitzServer,
|
server: RegionDomain,
|
||||||
urlString: string,
|
urlString: string,
|
||||||
) {
|
) {
|
||||||
let statsName: string;
|
let statsName: string;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { BlitzServer } from '../../constants/servers';
|
import { RegionDomain } from '../../constants/regions';
|
||||||
import { ResolvedPlayer } from '../discord/resolvePlayerFromCommand';
|
import { ResolvedPlayer } from '../discord/resolvePlayerFromCommand';
|
||||||
|
|
||||||
export default function resolvePlayerFromURL(urlString: string) {
|
export default function resolvePlayerFromURL(urlString: string) {
|
||||||
@@ -6,6 +6,6 @@ export default function resolvePlayerFromURL(urlString: string) {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
id: parseInt(url.searchParams.get('id')!),
|
id: parseInt(url.searchParams.get('id')!),
|
||||||
server: url.searchParams.get('server') as BlitzServer,
|
server: url.searchParams.get('server') as RegionDomain,
|
||||||
} satisfies ResolvedPlayer;
|
} satisfies ResolvedPlayer;
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@ import NoData, { NoDataType } from '../components/NoData';
|
|||||||
import PoweredBy, { PoweredByType } from '../components/PoweredBy';
|
import PoweredBy, { PoweredByType } from '../components/PoweredBy';
|
||||||
import TitleBar from '../components/TitleBar';
|
import TitleBar from '../components/TitleBar';
|
||||||
import Wrapper from '../components/Wrapper';
|
import Wrapper from '../components/Wrapper';
|
||||||
import { BLITZ_SERVERS } from '../constants/servers';
|
import { REGION_DOMAIN_NAMES } from '../constants/regions';
|
||||||
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
||||||
import resolveTankName from '../core/blitz/resolveTankName';
|
import resolveTankName from '../core/blitz/resolveTankName';
|
||||||
import { tankopedia } from '../core/blitz/tankopedia';
|
import { tankopedia } from '../core/blitz/tankopedia';
|
||||||
@@ -89,7 +89,7 @@ export default async function evolution<Type extends StatType>(
|
|||||||
nameDiscriminator={nameDiscriminator}
|
nameDiscriminator={nameDiscriminator}
|
||||||
image={image}
|
image={image}
|
||||||
description={`${evolutionName} • ${new Date().toDateString()} • ${
|
description={`${evolutionName} • ${new Date().toDateString()} • ${
|
||||||
BLITZ_SERVERS[server]
|
REGION_DOMAIN_NAMES[server]
|
||||||
}`}
|
}`}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import PoweredBy, { PoweredByType } from '../components/PoweredBy';
|
|||||||
import TierWeights, { TierWeightsRecord } from '../components/TierWeights';
|
import TierWeights, { TierWeightsRecord } from '../components/TierWeights';
|
||||||
import TitleBar from '../components/TitleBar';
|
import TitleBar from '../components/TitleBar';
|
||||||
import Wrapper from '../components/Wrapper';
|
import Wrapper from '../components/Wrapper';
|
||||||
import { BLITZ_SERVERS } from '../constants/servers';
|
import { REGION_DOMAIN_NAMES } from '../constants/regions';
|
||||||
import calculateWN8 from '../core/blitz/calculateWN8';
|
import calculateWN8 from '../core/blitz/calculateWN8';
|
||||||
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
||||||
import resolveTankName from '../core/blitz/resolveTankName';
|
import resolveTankName from '../core/blitz/resolveTankName';
|
||||||
@@ -143,7 +143,7 @@ export default async function fullStats<Type extends StatType>(
|
|||||||
nameDiscriminator={nameDiscriminator}
|
nameDiscriminator={nameDiscriminator}
|
||||||
image={image}
|
image={image}
|
||||||
description={`${statsName} • ${new Date().toDateString()} • ${
|
description={`${statsName} • ${new Date().toDateString()} • ${
|
||||||
BLITZ_SERVERS[server]
|
REGION_DOMAIN_NAMES[server]
|
||||||
}`}
|
}`}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import PoweredBy, { PoweredByType } from '../components/PoweredBy';
|
|||||||
import { TierWeightsRecord } from '../components/TierWeights';
|
import { TierWeightsRecord } from '../components/TierWeights';
|
||||||
import TitleBar from '../components/TitleBar';
|
import TitleBar from '../components/TitleBar';
|
||||||
import Wrapper from '../components/Wrapper';
|
import Wrapper from '../components/Wrapper';
|
||||||
import { BLITZ_SERVERS } from '../constants/servers';
|
import { REGION_DOMAIN_NAMES } from '../constants/regions';
|
||||||
import calculateWN8 from '../core/blitz/calculateWN8';
|
import calculateWN8 from '../core/blitz/calculateWN8';
|
||||||
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
||||||
import resolveTankName from '../core/blitz/resolveTankName';
|
import resolveTankName from '../core/blitz/resolveTankName';
|
||||||
@@ -164,7 +164,7 @@ export default async function stats<Type extends StatType>(
|
|||||||
nameDiscriminator={nameDiscriminator}
|
nameDiscriminator={nameDiscriminator}
|
||||||
image={image}
|
image={image}
|
||||||
description={`${statsName} • ${new Date().toDateString()} • ${
|
description={`${statsName} • ${new Date().toDateString()} • ${
|
||||||
BLITZ_SERVERS[server]
|
REGION_DOMAIN_NAMES[server]
|
||||||
}`}
|
}`}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import NoData, { NoDataType } from '../components/NoData';
|
|||||||
import PoweredBy, { PoweredByType } from '../components/PoweredBy';
|
import PoweredBy, { PoweredByType } from '../components/PoweredBy';
|
||||||
import TitleBar from '../components/TitleBar';
|
import TitleBar from '../components/TitleBar';
|
||||||
import Wrapper from '../components/Wrapper';
|
import Wrapper from '../components/Wrapper';
|
||||||
import { BLITZ_SERVERS } from '../constants/servers';
|
import { REGION_DOMAIN_NAMES } from '../constants/regions';
|
||||||
import calculateWN8 from '../core/blitz/calculateWN8';
|
import calculateWN8 from '../core/blitz/calculateWN8';
|
||||||
import getTankStats from '../core/blitz/getTankStats';
|
import getTankStats from '../core/blitz/getTankStats';
|
||||||
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
import getWargamingResponse from '../core/blitz/getWargamingResponse';
|
||||||
@@ -162,7 +162,7 @@ export default async function today(
|
|||||||
: undefined
|
: undefined
|
||||||
}
|
}
|
||||||
description={`Today's breakdown • ${new Date().toDateString()} • ${
|
description={`Today's breakdown • ${new Date().toDateString()} • ${
|
||||||
BLITZ_SERVERS[server]
|
REGION_DOMAIN_NAMES[server]
|
||||||
}`}
|
}`}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
@@ -445,6 +445,103 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
|
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
|
||||||
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
||||||
|
|
||||||
|
"@octokit/auth-token@^4.0.0":
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-4.0.0.tgz#40d203ea827b9f17f42a29c6afb93b7745ef80c7"
|
||||||
|
integrity sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==
|
||||||
|
|
||||||
|
"@octokit/core@^5.0.0":
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/core/-/core-5.0.0.tgz#0fc2b6eb88437e5c1d69f756a5dcee7472d2b2dd"
|
||||||
|
integrity sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/auth-token" "^4.0.0"
|
||||||
|
"@octokit/graphql" "^7.0.0"
|
||||||
|
"@octokit/request" "^8.0.2"
|
||||||
|
"@octokit/request-error" "^5.0.0"
|
||||||
|
"@octokit/types" "^11.0.0"
|
||||||
|
before-after-hook "^2.2.0"
|
||||||
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
|
"@octokit/endpoint@^9.0.0":
|
||||||
|
version "9.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-9.0.0.tgz#c5ce19c74b999b85af9a8a189275c80faa3e90fd"
|
||||||
|
integrity sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^11.0.0"
|
||||||
|
is-plain-object "^5.0.0"
|
||||||
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
|
"@octokit/graphql@^7.0.0":
|
||||||
|
version "7.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-7.0.1.tgz#f2291620e17cdaa8115f8d0cdfc0644789ec2db2"
|
||||||
|
integrity sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/request" "^8.0.1"
|
||||||
|
"@octokit/types" "^11.0.0"
|
||||||
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
|
"@octokit/openapi-types@^18.0.0":
|
||||||
|
version "18.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.0.0.tgz#f43d765b3c7533fd6fb88f3f25df079c24fccf69"
|
||||||
|
integrity sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==
|
||||||
|
|
||||||
|
"@octokit/plugin-paginate-rest@^8.0.0":
|
||||||
|
version "8.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-8.0.0.tgz#417b5367da2ba3c2d255a59b87c1cc608228ec38"
|
||||||
|
integrity sha512-2xZ+baZWUg+qudVXnnvXz7qfrTmDeYPCzangBVq/1gXxii/OiS//4shJp9dnCCvj1x+JAm9ji1Egwm1BA47lPQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^11.0.0"
|
||||||
|
|
||||||
|
"@octokit/plugin-request-log@^4.0.0":
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-4.0.0.tgz#260fa6970aa97bbcbd91f99f3cd812e2b285c9f1"
|
||||||
|
integrity sha512-2uJI1COtYCq8Z4yNSnM231TgH50bRkheQ9+aH8TnZanB6QilOnx8RMD2qsnamSOXtDj0ilxvevf5fGsBhBBzKA==
|
||||||
|
|
||||||
|
"@octokit/plugin-rest-endpoint-methods@^9.0.0":
|
||||||
|
version "9.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-9.0.0.tgz#e15d54540893202da107305ded2bfd21ce6f769d"
|
||||||
|
integrity sha512-KquMF/VB1IkKNiVnzJKspY5mFgGyLd7HzdJfVEGTJFzqu9BRFNWt+nwTCMuUiWc72gLQhRWYubTwOkQj+w/1PA==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^11.0.0"
|
||||||
|
|
||||||
|
"@octokit/request-error@^5.0.0":
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-5.0.0.tgz#060c5770833f9d563ad9a49fec6650c41584bc40"
|
||||||
|
integrity sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/types" "^11.0.0"
|
||||||
|
deprecation "^2.0.0"
|
||||||
|
once "^1.4.0"
|
||||||
|
|
||||||
|
"@octokit/request@^8.0.1", "@octokit/request@^8.0.2":
|
||||||
|
version "8.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/request/-/request-8.1.0.tgz#3b0fd15faeda1545024af09c31ac2689f4d65e7d"
|
||||||
|
integrity sha512-0gg/NwewU0iXctYBale0VVcCPqOtoW5lsog8cNBJgzV/CyTHa2gicUBOlNnzOk6pJkuwXI34qkq+uRm40PmD4A==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/endpoint" "^9.0.0"
|
||||||
|
"@octokit/request-error" "^5.0.0"
|
||||||
|
"@octokit/types" "^11.1.0"
|
||||||
|
is-plain-object "^5.0.0"
|
||||||
|
universal-user-agent "^6.0.0"
|
||||||
|
|
||||||
|
"@octokit/rest@^20.0.1":
|
||||||
|
version "20.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-20.0.1.tgz#b8ee194b7cf89772d1e3fea3209f741c76a5efd3"
|
||||||
|
integrity sha512-wROV21RwHQIMNb2Dgd4+pY+dVy1Dwmp85pBrgr6YRRDYRBu9Gb+D73f4Bl2EukZSj5hInq2Tui9o7gAQpc2k2Q==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/core" "^5.0.0"
|
||||||
|
"@octokit/plugin-paginate-rest" "^8.0.0"
|
||||||
|
"@octokit/plugin-request-log" "^4.0.0"
|
||||||
|
"@octokit/plugin-rest-endpoint-methods" "^9.0.0"
|
||||||
|
|
||||||
|
"@octokit/types@^11.0.0", "@octokit/types@^11.1.0":
|
||||||
|
version "11.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@octokit/types/-/types-11.1.0.tgz#9e5db741d582b05718a4d91bac8cc987def235ea"
|
||||||
|
integrity sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==
|
||||||
|
dependencies:
|
||||||
|
"@octokit/openapi-types" "^18.0.0"
|
||||||
|
|
||||||
"@radix-ui/colors@^0.1.8":
|
"@radix-ui/colors@^0.1.8":
|
||||||
version "0.1.9"
|
version "0.1.9"
|
||||||
resolved "https://registry.yarnpkg.com/@radix-ui/colors/-/colors-0.1.9.tgz#aad732ecc4ce1018adcb3aedd3ce3c573c2256cc"
|
resolved "https://registry.yarnpkg.com/@radix-ui/colors/-/colors-0.1.9.tgz#aad732ecc4ce1018adcb3aedd3ce3c573c2256cc"
|
||||||
@@ -871,6 +968,11 @@ [email protected]:
|
|||||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978"
|
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978"
|
||||||
integrity sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==
|
integrity sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==
|
||||||
|
|
||||||
|
before-after-hook@^2.2.0:
|
||||||
|
version "2.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c"
|
||||||
|
integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==
|
||||||
|
|
||||||
bepaint@^0.1.0-beta.3:
|
bepaint@^0.1.0-beta.3:
|
||||||
version "0.1.0-beta.3"
|
version "0.1.0-beta.3"
|
||||||
resolved "https://registry.yarnpkg.com/bepaint/-/bepaint-0.1.0-beta.3.tgz#fe8f0d20e35da075a6ed69f42d61156d985da584"
|
resolved "https://registry.yarnpkg.com/bepaint/-/bepaint-0.1.0-beta.3.tgz#fe8f0d20e35da075a6ed69f42d61156d985da584"
|
||||||
@@ -992,6 +1094,11 @@ [email protected]:
|
|||||||
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
|
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
|
||||||
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
|
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
|
||||||
|
|
||||||
|
deprecation@^2.0.0:
|
||||||
|
version "2.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919"
|
||||||
|
integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==
|
||||||
|
|
||||||
[email protected]:
|
[email protected]:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
|
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
|
||||||
@@ -1274,6 +1381,11 @@ [email protected]:
|
|||||||
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
|
resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
|
||||||
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
|
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
|
||||||
|
|
||||||
|
is-plain-object@^5.0.0:
|
||||||
|
version "5.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
|
||||||
|
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
|
||||||
|
|
||||||
"js-tokens@^3.0.0 || ^4.0.0":
|
"js-tokens@^3.0.0 || ^4.0.0":
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||||
@@ -1395,6 +1507,13 @@ [email protected]:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ee-first "1.1.1"
|
ee-first "1.1.1"
|
||||||
|
|
||||||
|
once@^1.4.0:
|
||||||
|
version "1.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||||
|
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
|
||||||
|
dependencies:
|
||||||
|
wrappy "1"
|
||||||
|
|
||||||
pako@^0.2.5:
|
pako@^0.2.5:
|
||||||
version "0.2.9"
|
version "0.2.9"
|
||||||
resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
|
resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
|
||||||
@@ -1686,6 +1805,11 @@ unicode-trie@^2.0.0:
|
|||||||
pako "^0.2.5"
|
pako "^0.2.5"
|
||||||
tiny-inflate "^1.0.0"
|
tiny-inflate "^1.0.0"
|
||||||
|
|
||||||
|
universal-user-agent@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee"
|
||||||
|
integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==
|
||||||
|
|
||||||
[email protected], unpipe@~1.0.0:
|
[email protected], unpipe@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
||||||
@@ -1767,6 +1891,11 @@ vue@^3.3.4:
|
|||||||
"@vue/server-renderer" "3.3.4"
|
"@vue/server-renderer" "3.3.4"
|
||||||
"@vue/shared" "3.3.4"
|
"@vue/shared" "3.3.4"
|
||||||
|
|
||||||
|
wrappy@1:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||||
|
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
|
||||||
|
|
||||||
ws@^8.13.0:
|
ws@^8.13.0:
|
||||||
version "8.13.0"
|
version "8.13.0"
|
||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
|
resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
|
||||||
|
|||||||
Reference in new issue
Block a user