From a31cea2ba060eedee6c1334f19cb737da67a5dd0 Mon Sep 17 00:00:00 2001 From: tresabhi Date: Sat, 10 Jun 2023 01:09:07 +0000 Subject: [PATCH] feat: build script --- .github/workflows/ci-build.yml | 47 +++++++++++++ package.json | 8 ++- src/events/interactionCreate.ts | 36 ++++++++-- yarn.lock | 119 +------------------------------- 4 files changed, 84 insertions(+), 126 deletions(-) create mode 100644 .github/workflows/ci-build.yml diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml new file mode 100644 index 000000000..df3789d87 --- /dev/null +++ b/.github/workflows/ci-build.yml @@ -0,0 +1,47 @@ +name: CI Build + +on: [push, pull_request] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + name: Build + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [18.x] + + steps: + - name: Get code + uses: actions/checkout@v3 + + - name: Use node + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + 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: Build + run: yarn build + + - name: Archive build + uses: actions/upload-artifact@v3 + with: + name: dist + path: dist diff --git a/package.json b/package.json index 5b17c3ff9..ac539412e 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,9 @@ "main": "index.js", "type": "module", "scripts": { - "start": "vite-node src/index.ts --script", + "dev": "yarn build && yarn start", + "start": "node --enable-source-maps dist/index.cjs", + "build": "rm -rf dist && esbuild src/index.ts --outfile=dist/index.cjs --bundle --platform=node --loader:.node=copy --minify --sourcemap", "lint": "tsc" }, "license": "MIT", @@ -28,7 +30,7 @@ "@types/markdown-escape": "^1.1.0", "@types/node": "^20.2.1", "@types/react": "^18.2.7", - "typescript": "^5.0.4", - "vite-node": "^0.31.1" + "esbuild": "^0.17.19", + "typescript": "^5.0.4" } } diff --git a/src/events/interactionCreate.ts b/src/events/interactionCreate.ts index 294c5b5a0..46d80e8f9 100644 --- a/src/events/interactionCreate.ts +++ b/src/events/interactionCreate.ts @@ -12,6 +12,20 @@ import { SlashCommandBuilder, } from 'discord.js'; import discord from '../../discord.json' assert { type: 'json' }; +import debug from '../commands/debug.js'; +import eligible from '../commands/eligible.js'; +import help from '../commands/help.js'; +import inactive from '../commands/inactive.js'; +import ownedtanks from '../commands/ownedtanks.js'; +import playerachievements from '../commands/playerachievements.js'; +import playerinfo from '../commands/playerinfo.js'; +import searchclans from '../commands/searchclans.js'; +import searchplayers from '../commands/searchplayers.js'; +import searchtanks from '../commands/searchtanks.js'; +import stats from '../commands/stats.js'; +import tankstats from '../commands/tankstats.js'; +import today from '../commands/today.js'; +import verify from '../commands/verify.js'; import negativeEmbed from '../core/interaction/negativeEmbed.js'; import { discordToken } from '../core/process/args.js'; import getClientId from '../core/process/getClientId.js'; @@ -30,12 +44,22 @@ export interface CommandRegistry { const rest = new REST().setToken(discordToken); -const commands = Object.entries( - import.meta.glob('../commands/*', { - eager: true, - import: 'default', - }), -).reduce>((accumulator, [, registry]) => { +const commands = [ + debug, + eligible, + help, + inactive, + ownedtanks, + playerachievements, + playerinfo, + searchclans, + searchplayers, + searchtanks, + stats, + tankstats, + today, + verify, +].reduce>((accumulator, registry) => { return { ...accumulator, [registry.command.name]: registry }; }, {}); diff --git a/yarn.lock b/yarn.lock index 36e6a48e2..dedafa72b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -333,11 +333,6 @@ dependencies: "@types/node" "*" -acorn@^8.8.2: - version "8.8.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - base64-js@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" @@ -355,11 +350,6 @@ busboy@^1.6.0: dependencies: streamsearch "^1.1.0" -cac@^6.7.14: - version "6.7.14" - resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz" - integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== - camelize@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" @@ -399,13 +389,6 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== -debug@^4.3.4: - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - discord-api-types@^0.37.37: version "0.37.39" resolved "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.39.tgz" @@ -435,9 +418,9 @@ emoji-regex@^10.2.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.2.1.tgz#a41c330d957191efd3d9dfe6e1e8e1e9ab048b3f" integrity sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA== -esbuild@^0.17.5: +esbuild@^0.17.19: version "0.17.19" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955" integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw== optionalDependencies: "@esbuild/android-arm" "0.17.19" @@ -487,11 +470,6 @@ file-type@^18.2.1: strtok3 "^7.0.0" token-types "^5.0.1" -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - fuzzysort@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/fuzzysort/-/fuzzysort-2.0.4.tgz" @@ -517,11 +495,6 @@ inherits@^2.0.3: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -jsonc-parser@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz" - integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== - linebreak@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/linebreak/-/linebreak-1.1.0.tgz#831cf378d98bced381d8ab118f852bd50d81e46b" @@ -557,26 +530,6 @@ markdown-escape@^2.0.0: resolved "https://registry.npmjs.org/markdown-escape/-/markdown-escape-2.0.0.tgz" integrity sha512-Trz4v0+XWlwy68LJIyw3bLbsJiC8XAbRCKF9DbEtZjyndKOGVx6n+wNB0VfoRmY2LKboQLeniap3xrb6LGSJ8A== -mlly@^1.2.0: - version "1.2.1" - resolved "https://registry.npmjs.org/mlly/-/mlly-1.2.1.tgz" - integrity sha512-1aMEByaWgBPEbWV2BOPEMySRrzl7rIHXmQxam4DM8jVjalTQDjpN2ZKOLUrwyhfZQO7IXHml2StcHMhooDeEEQ== - dependencies: - acorn "^8.8.2" - pathe "^1.1.0" - pkg-types "^1.0.3" - ufo "^1.1.2" - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -nanoid@^3.3.6: - version "3.3.6" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== - pako@^0.2.5: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" @@ -590,44 +543,16 @@ parse-css-color@^0.2.1: color-name "^1.1.4" hex-rgb "^4.1.0" -pathe@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz" - integrity sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w== - peek-readable@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz" integrity sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A== -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -pkg-types@^1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz" - integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== - dependencies: - jsonc-parser "^3.2.0" - mlly "^1.2.0" - pathe "^1.1.0" - postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.23: - version "8.4.23" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz" - integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - react@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" @@ -651,13 +576,6 @@ readable-web-to-node-stream@^3.0.2: dependencies: readable-stream "^3.6.0" -rollup@^3.21.0: - version "3.22.0" - resolved "https://registry.npmjs.org/rollup/-/rollup-3.22.0.tgz" - integrity sha512-imsigcWor5Y/dC0rz2q0bBt9PabcL3TORry2hAa6O6BuMvY71bqHyfReAz5qyAqiQATD1m70qdntqBfBQjVWpQ== - optionalDependencies: - fsevents "~2.3.2" - safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" @@ -678,11 +596,6 @@ satori@^0.9.1: postcss-value-parser "^4.2.0" yoga-wasm-web "^0.3.3" -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" @@ -736,11 +649,6 @@ typescript@^5.0.4: resolved "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz" integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== -ufo@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/ufo/-/ufo-1.1.2.tgz" - integrity sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ== - undici@^5.21.0: version "5.21.2" resolved "https://registry.npmjs.org/undici/-/undici-5.21.2.tgz" @@ -761,29 +669,6 @@ util-deprecate@^1.0.1: resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -vite-node@^0.31.1: - version "0.31.1" - resolved "https://registry.npmjs.org/vite-node/-/vite-node-0.31.1.tgz" - integrity sha512-BajE/IsNQ6JyizPzu9zRgHrBwczkAs0erQf/JRpgTIESpKvNj9/Gd0vxX905klLkb0I0SJVCKbdrl5c6FnqYKA== - dependencies: - cac "^6.7.14" - debug "^4.3.4" - mlly "^1.2.0" - pathe "^1.1.0" - picocolors "^1.0.0" - vite "^3.0.0 || ^4.0.0" - -"vite@^3.0.0 || ^4.0.0": - version "4.3.8" - resolved "https://registry.npmjs.org/vite/-/vite-4.3.8.tgz" - integrity sha512-uYB8PwN7hbMrf4j1xzGDk/lqjsZvCDbt/JC5dyfxc19Pg8kRm14LinK/uq+HSLNswZEoKmweGdtpbnxRtrAXiQ== - dependencies: - esbuild "^0.17.5" - postcss "^8.4.23" - rollup "^3.21.0" - optionalDependencies: - fsevents "~2.3.2" - ws@^8.13.0: version "8.13.0" resolved "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz"