diff --git a/.env.devnet b/.env.devnet deleted file mode 100644 index e2370511..00000000 --- a/.env.devnet +++ /dev/null @@ -1,43 +0,0 @@ -# CHAIN DATA -CHAIN_URI="https://rpc-devnet-cardano-evm.c1.milkomeda.com" -CHAIN_NAME="Milkomeda Cardano Testnet" -CHAIN_ID="200101" -CHAIN_EXPLORER_URI="https://explorer-devnet-cardano-evm.c1.milkomeda.com" -CHAIN_CURRENCY_NAME="Milk Test Ada" -CHAIN_CURRENCY_SYMBOL="mtADA" -CHAIN_CURRENCY_DECIMALS="18" - -# CONTRACT DEPLOYMENT -CONTRACT_ADDRESS="0x58cd762320187D68523946cdab7095F3C441C0fD" # v1, deployed 2023-02-16 -DEFAULT_FEE="100000000000000" -BLOCK_TIME="2" -START_BLOCKHEIGHT="10000000" - -# SERVICES -BACKEND_URI="https://td-backend-testnet-c1.paimastudios.com" -INDEXER_URI="https://nft-indexer-testnet-c1.paimastudios.com" -BATCHER_URI="https://td-batcher-testnet-c1.paimastudios.com" -STATEFUL_URI="https://td-sf-indexer-testnet-c1.paimastudios.com" -NFT_CONTRACT="0x28d7430845044EB1A9Fc50aD7A605686CFb784DB" - -# MISC -STOP_BLOCKHEIGHT= -SERVER_ONLY_MODE="false" - -# STF checkpoints - -# DATABASE -DB_NAME="postgres" -DB_USER="postgres" -DB_PW="postgres" -DB_HOST="localhost" -DB_PORT="5432" -DB_WIPE_SCHEDULE="7" - -# BACKEND -WEBSERVER_PORT="3333" - -# CONFIG IDS -SHORT_CONFIG="FWJv579eJfdg0P" -MEDIUM_CONFIG="S6BZo8biAtrDp1" -LONG_CONFIG="sEyGPliPidNUzx" diff --git a/.env.mainnet b/.env.mainnet deleted file mode 100644 index 7d1e7714..00000000 --- a/.env.mainnet +++ /dev/null @@ -1,37 +0,0 @@ -# CHAIN DATA -CHAIN_URI="https://rpc-mainnet-cardano-evm.c1.milkomeda.com" -CHAIN_NAME="Milkomeda Cardano Mainnet" -CHAIN_ID="2001" -CHAIN_EXPLORER_URI="https://explorer-mainnet-cardano-evm.c1.milkomeda.com" -CHAIN_CURRENCY_NAME="Milk Ada" -CHAIN_CURRENCY_SYMBOL="mADA" -CHAIN_CURRENCY_DECIMALS="18" - -# CONTRACT DEPLOYMENT -CONTRACT_ADDRESS="0x247aB3d161f23256E04077F813a7eC9D10432dF0" -DEFAULT_FEE="100000000000000" -BLOCK_TIME="2" -START_BLOCKHEIGHT="11033612" - -# SERVICES -BACKEND_URI="https://td-backend-mainnet-c1.paimastudios.com" -INDEXER_URI="https://nft-indexer-mainnet-c1.paimastudios.com" -BATCHER_URI="https://td-batcher-mainnet-c1.paimastudios.com" -STATEFUL_URI="https://td-sf-indexer-mainnet-c1.paimastudios.com" -NFT_CONTRACT="0xa335d662BB47409e04F06dC7Fd03cEc854530172" - -# MISC -STOP_BLOCKHEIGHT= -SERVER_ONLY_MODE="false" - -#STF checkpoints - -# DATABASE -DB_NAME="postgres" -DB_USER="postgres" -DB_PW="postgres" -DB_HOST="localhost" -DB_PORT="5432" - -# BACKEND -WEBSERVER_PORT="3333" diff --git a/api/src/controllers/allConfigs.ts b/api/src/controllers/allConfigs.ts index 08c1613a..a0359c5e 100644 --- a/api/src/controllers/allConfigs.ts +++ b/api/src/controllers/allConfigs.ts @@ -13,7 +13,7 @@ export class userConfigsController extends Controller { @Get() public async get(@Query() creator: string): Promise { const pool = requirePool(); - creator = (await getMainAddress(creator, pool)).address; + //creator = (await getMainAddress(creator, pool)).address; const configs = await getUserConfigs.run({ creator }, pool); return { configs }; } diff --git a/api/src/controllers/openLobbies.ts b/api/src/controllers/openLobbies.ts index f8bade1a..a0da4c9f 100644 --- a/api/src/controllers/openLobbies.ts +++ b/api/src/controllers/openLobbies.ts @@ -29,7 +29,7 @@ export class openLobbiesController extends Controller { throw new ValidateError({ count: { message: 'invalid number' } }, ''); } - wallet = (await getMainAddress(wallet, pool)).address; + //wallet = (await getMainAddress(wallet, pool)).address; const p = valPage.right; const c = valCount.right; const offset = (p - 1) * c; diff --git a/api/src/controllers/searchOpenLobbies.ts b/api/src/controllers/searchOpenLobbies.ts index b44c05f3..6a9c97c9 100644 --- a/api/src/controllers/searchOpenLobbies.ts +++ b/api/src/controllers/searchOpenLobbies.ts @@ -26,7 +26,7 @@ export class SearchOpenLobbiesController extends Controller { if (searchQuery.length < MIN_SEARCH_LENGTH || searchQuery.length > LOBBY_ID_LENGTH) return emptyResponse; - wallet = (await getMainAddress(wallet, pool)).address; + //wallet = (await getMainAddress(wallet, pool)).address; if (searchQuery.length == LOBBY_ID_LENGTH) { const lobbies = await getOpenLobbyById.run({ searchQuery, wallet }, pool); diff --git a/api/src/controllers/userFinishedLobbies.ts b/api/src/controllers/userFinishedLobbies.ts index 32ae7c2b..2255a615 100644 --- a/api/src/controllers/userFinishedLobbies.ts +++ b/api/src/controllers/userFinishedLobbies.ts @@ -30,7 +30,7 @@ export class UserFinishedLobbiesController extends Controller { } // after typecheck, valid data output is given in .right - wallet = (await getMainAddress(wallet, pool)).address; + //wallet = (await getMainAddress(wallet, pool)).address; const p = valPage.right; const c = valCount.right; const offset = (p - 1) * c; diff --git a/api/src/controllers/userLobbies.ts b/api/src/controllers/userLobbies.ts index 90131c79..5753565c 100644 --- a/api/src/controllers/userLobbies.ts +++ b/api/src/controllers/userLobbies.ts @@ -35,7 +35,7 @@ export class UserLobbiesController extends Controller { } // after typecheck, valid data output is given in .right - wallet = (await getMainAddress(wallet, pool)).address; + //wallet = (await getMainAddress(wallet, pool)).address; const p = valPage.right; const c = valCount.right; const offset = (p - 1) * c; diff --git a/api/src/controllers/userLobbiesBlockheight.ts b/api/src/controllers/userLobbiesBlockheight.ts index 6a12f8cb..98e17ef9 100644 --- a/api/src/controllers/userLobbiesBlockheight.ts +++ b/api/src/controllers/userLobbiesBlockheight.ts @@ -14,7 +14,7 @@ export class UserLobbiesBlockheightController extends Controller { @Get() public async get(@Query() wallet: string, @Query() blockHeight: number): Promise { const pool = requirePool(); - wallet = (await getMainAddress(wallet, pool)).address; + //wallet = (await getMainAddress(wallet, pool)).address; const valBH = psqlNum.decode(blockHeight); if (isLeft(valBH)) { throw new ValidateError({ blockHeight: { message: 'invalid number' } }, ''); diff --git a/api/src/controllers/userNFT.ts b/api/src/controllers/userNFT.ts index 237f9623..a0898dd6 100644 --- a/api/src/controllers/userNFT.ts +++ b/api/src/controllers/userNFT.ts @@ -12,7 +12,7 @@ export class userNFTController extends Controller { @Get() public async get(@Query() wallet: string): Promise { const pool = requirePool(); - wallet = (await getMainAddress(wallet, pool)).address; + //wallet = (await getMainAddress(wallet, pool)).address; const [nft] = await getLatestUserNft.run({ wallet }, pool); return { nft }; } diff --git a/api/src/controllers/userStats.ts b/api/src/controllers/userStats.ts index 357395b5..e3b0edd0 100644 --- a/api/src/controllers/userStats.ts +++ b/api/src/controllers/userStats.ts @@ -12,7 +12,7 @@ export class userStatsController extends Controller { @Get() public async get(@Query() wallet: string): Promise { const pool = requirePool(); - wallet = (await getMainAddress(wallet, pool)).address; + //wallet = (await getMainAddress(wallet, pool)).address; const [stats] = await getUserStats.run({ wallet }, pool); return { stats }; } diff --git a/backend/esbuildconfig.js b/backend/esbuildconfig.js new file mode 100644 index 00000000..b0af4caa --- /dev/null +++ b/backend/esbuildconfig.js @@ -0,0 +1,26 @@ +import { build } from 'esbuild'; + +await build({ + outfile: 'build/index.bundle.js', + // JS output from previous compilation step used here instead of index.ts to have more control over the TS build process + entryPoints: ['build/index.js'], + + bundle: true, + format: 'esm', + platform: 'node', + + minify: true, + treeShaking: true, + sourcemap: true, + // source map is just for crash stack traces, so source content isn't needed + sourcesContent: false, + + define: { + __dirname: 'import.meta.dirname', + __filename: 'import.meta.filename', + }, + + banner: { + js: "import { createRequire } from 'module'; const require = createRequire(import.meta.url);", + }, +}); diff --git a/backend/package.json b/backend/package.json index 2ac6a435..359eaea0 100644 --- a/backend/package.json +++ b/backend/package.json @@ -2,11 +2,17 @@ "name": "@tower-defense/backend", "version": "1.0.0", "description": "", - "main": "build/index.js", - "types": "build/index.d.ts", "type": "module", "author": "", "license": "ISC", + "scripts": { + "prepack": "(cd .. && npm run build) && node ./esbuildconfig.js && cp $(npm ls --parseable @dcspark/cardano-multiplatform-lib-nodejs | head -1)/cardano_multiplatform_lib_bg.wasm build/" + }, + "files": [ + "build/index.bundle.js", + "build/index.bundle.js.map", + "build/cardano_multiplatform_lib_bg.wasm" + ], "dependencies": { "@paima/db": "5.0.0", "@paima/executors": "^5.0.0", diff --git a/backend/src/stf/v2/parser.ts b/backend/src/stf/v2/parser.ts index a6875540..df17cc78 100644 --- a/backend/src/stf/v2/parser.ts +++ b/backend/src/stf/v2/parser.ts @@ -50,7 +50,7 @@ const createdLobby: ParserRecord = { value => conciseFactionMap[value as RoleSettingConcise] ), numOfRounds: PaimaParser.NumberParser(3, 1000), - roundLength: PaimaParser.DefaultRoundLength(parseInt(process.env.BLOCK_TIME || '4', 0)), + roundLength: PaimaParser.DefaultRoundLength(/* always in units of 2s regardless of real block speed */ 2), isHidden: PaimaParser.TrueFalseParser(false), map: PaimaParser.EnumParser(maps), isPractice: PaimaParser.TrueFalseParser(false), diff --git a/backend/src/stf/v2/persist/lobby.ts b/backend/src/stf/v2/persist/lobby.ts index 87ec8fdb..f7223699 100644 --- a/backend/src/stf/v2/persist/lobby.ts +++ b/backend/src/stf/v2/persist/lobby.ts @@ -18,6 +18,7 @@ import { blankStats } from './stats.js'; import { practiceRound } from '../transition.js'; import { persistNewRound } from './match.js'; import { generateMatchState } from '@tower-defense/game-logic'; +import { ENV } from '@paima/utils'; // Persist creation of a lobby export function persistLobbyCreation( @@ -34,7 +35,7 @@ export function persistLobbyCreation( lobby_creator_token_id: tokenId, creator_faction: inputData.creatorFaction, num_of_rounds: inputData.numOfRounds, - round_length: inputData.roundLength, + round_length: inputData.roundLength * 2 / ENV.BLOCK_TIME, // convert from 2-second units to BLOCK_TIME-second units current_round: 0, creation_block_height: blockHeight, map: inputData.map, @@ -70,7 +71,7 @@ export function persistPracticeLobbyCreation( lobby_creator_token_id: tokenId, creator_faction: inputData.creatorFaction, num_of_rounds: inputData.numOfRounds, - round_length: inputData.roundLength, + round_length: inputData.roundLength * 2 / ENV.BLOCK_TIME, // convert from 2-second units to BLOCK_TIME-second units current_round: 0, creation_block_height: blockHeight, map: inputData.map, diff --git a/contracts/evm/hardhat.config.ts b/contracts/evm/hardhat.config.ts index e6c433ad..b8e39568 100644 --- a/contracts/evm/hardhat.config.ts +++ b/contracts/evm/hardhat.config.ts @@ -9,6 +9,10 @@ import 'hardhat-dependency-compiler'; import 'hardhat-interact'; import { task, type HardhatUserConfig } from 'hardhat/config'; import { type HardhatRuntimeEnvironment } from 'hardhat/types'; +import * as dotenv from 'dotenv'; + +const xai: Record = {}; +dotenv.config({ path: '../../.env.xai', processEnv: xai }); const config: HardhatUserConfig = { solidity: '0.8.20', @@ -27,9 +31,18 @@ const config: HardhatUserConfig = { chainId: 31337, mining: { auto: true, - interval: 2000, + // Xai runs at *approximately* 250ms per block, but if we ask Hardhat to + // produce multiple blocks per second, it pushes timestamps into the future + // instead of allowing them to repeat like Xai does, causing the emulated + // funnel to also run into the future, so we can't simulate Xai exactly. + interval: 1000, }, }, + xai: { + chainId: 660279, + url: 'https://xai-chain.net/rpc', + accounts: xai.DEPLOYER_PRIVATE_KEY ? [xai.DEPLOYER_PRIVATE_KEY] : [], + }, }, dependencyCompiler: { paths: [ @@ -63,9 +76,11 @@ task('node').setAction(async (args, hre: HardhatRuntimeEnvironment, runSuper) => 'ignition', 'deploy', './ignition/modules/deploy.ts', - '--parameters', './ignition/parameters.json', - '--network', 'localhost', - '--reset', // So we don't have to manually rm -rf the deploy journal. + '--parameters', + './ignition/parameters.json', + '--network', + 'localhost', + '--reset', // So we don't have to manually rm -rf the deploy journal. ], { stdio: 'inherit', diff --git a/contracts/evm/ignition/modules/deploy.ts b/contracts/evm/ignition/modules/deploy.ts index c967b110..15461a8b 100644 --- a/contracts/evm/ignition/modules/deploy.ts +++ b/contracts/evm/ignition/modules/deploy.ts @@ -1,3 +1,5 @@ +// A Hardhat module representing what should be deployed locally. +// Includes a Genesis Trainer contract so we have something to test against. import { buildModule } from '@nomicfoundation/hardhat-ignition/modules'; import type { IgnitionModuleBuilder } from '@nomicfoundation/ignition-core'; diff --git a/contracts/evm/ignition/modules/xai.ts b/contracts/evm/ignition/modules/xai.ts new file mode 100644 index 00000000..34a7e3e5 --- /dev/null +++ b/contracts/evm/ignition/modules/xai.ts @@ -0,0 +1,12 @@ +// A Hardhat module that represents what TD should actually deploy to Xai. +// Excludes Tarochi Genesis Trainers because that contract's deployment is +// not Tower Defense's responsibility. +import { buildModule } from '@nomicfoundation/hardhat-ignition/modules'; +import type { IgnitionModuleBuilder } from '@nomicfoundation/ignition-core'; + +export default buildModule('L2Contract', (m: IgnitionModuleBuilder) => { + // https://github.com/NomicFoundation/hardhat-ignition/issues/673 + const l2Contract = m.contract('PaimaL2Contract', [m.getAccount(0), 1]); + + return { l2Contract }; +}); diff --git a/contracts/evm/package.json b/contracts/evm/package.json index 3418ed7c..6f0caecb 100644 --- a/contracts/evm/package.json +++ b/contracts/evm/package.json @@ -12,6 +12,7 @@ "@nomicfoundation/hardhat-ignition-viem": "^0.15.1", "@nomicfoundation/hardhat-toolbox-viem": "^3.0.0", "@openzeppelin/contracts": "^5.0.2", + "dotenv": "^16.4.1", "hardhat": "^2.19.4", "hardhat-abi-exporter": "github:paimaStudios/hardhat-abi-exporter#export-ts-wrapper", "hardhat-dependency-compiler": "^1.1.3", diff --git a/middleware/debug-build b/middleware/debug-build new file mode 100755 index 00000000..5ed0849c --- /dev/null +++ b/middleware/debug-build @@ -0,0 +1,16 @@ +#!/bin/bash +# middleware/debug-build: copy paimaMiddleware.js, source map, and env.js into +# a Unity build output directory. +# $1 = where to put the files +# $NETWORK = what .env to use, default `localhost` +set -euo pipefail + +dest="${1:?first argument should be destination directory}" +if ! test -f "$dest/index.html"; then + printf "destination directory should already contain 'index.html' from Unity build" >&2 + exit 1 +fi +set -x +npm -w middleware run build +cp middleware/packaged/paimaMiddleware.js{,.map} "$dest" +middleware/make-env-json ".env.${NETWORK:-localhost}" >"$dest/env.js" diff --git a/middleware/esbuildconfig.cjs b/middleware/esbuildconfig.cjs deleted file mode 100644 index fe8a80f9..00000000 --- a/middleware/esbuildconfig.cjs +++ /dev/null @@ -1,31 +0,0 @@ -const g = require('@esbuild-plugins/node-globals-polyfill'); -const m = require('@esbuild-plugins/node-modules-polyfill'); -const modules = m.NodeModulesPolyfillPlugin(); - -const define = { global: 'window' }; -// To replace process.env calls in middleware with variable values during build time -for (const variable in process.env) { - define[`process.env.${variable}`] = JSON.stringify(process.env[variable]); -} - -const global = g.NodeGlobalsPolyfillPlugin({ - process: true, - buffer: true, - define: { 'process.env.var': '"hello"' }, // inject will override define, to keep env vars you must also pass define here https://github.com/evanw/esbuild/issues/660 -}); -const esbuild = require('esbuild'); -/** @type import('esbuild').BuildOptions */ -const config = { - // JS output from previous compilation step used here instead of index.ts to have more control over the TS build process - entryPoints: ['build/index.js'], - bundle: true, - format: 'esm', - define, - outfile: 'packaged/middleware.js', - plugins: [global, modules], - external: ['pg-native'], - globalName: 'paimaMiddleware', - sourcemap: true -}; - -esbuild.build(config); diff --git a/middleware/esbuildconfig.js b/middleware/esbuildconfig.js new file mode 100644 index 00000000..8943073a --- /dev/null +++ b/middleware/esbuildconfig.js @@ -0,0 +1,28 @@ +import { NodeModulesPolyfillPlugin } from '@esbuild-plugins/node-modules-polyfill'; +import { build } from 'esbuild'; + +await build({ + outfile: 'packaged/paimaMiddleware.js', + // JS output from previous compilation step used here instead of index.ts to have more control over the TS build process + entryPoints: ['build/index.js'], + + bundle: true, + format: 'esm', + + minify: true, + treeShaking: true, + sourcemap: true, + // source map is for browser debugging, so include source content + sourcesContent: true, + + define: { + global: 'window', + 'process.env': 'PaimaProcessEnv', + }, + + plugins: [NodeModulesPolyfillPlugin()], + + banner: { + js: "import PaimaProcessEnv from './env.js';", + }, +}); diff --git a/middleware/make-env-json b/middleware/make-env-json new file mode 100755 index 00000000..9d690126 --- /dev/null +++ b/middleware/make-env-json @@ -0,0 +1,20 @@ +#!/usr/bin/env node +import { config } from "dotenv"; + +config({ path: process.argv.splice(2) }); + +const keys = [ + // Paima ENV + 'CHAIN_URI', + 'CONTRACT_ADDRESS', + 'SECURITY_NAMESPACE', + 'BACKEND_URI', + 'BATCHER_URI', + 'BLOCK_TIME', + // TD GameENV + 'SHORT_CONFIG', + 'MEDIUM_CONFIG', + 'LONG_CONFIG', +]; + +console.log('export default', JSON.stringify(Object.fromEntries(keys.map(k => [k, process.env[k]])))); diff --git a/middleware/package.json b/middleware/package.json index 9f15f924..d59b8041 100644 --- a/middleware/package.json +++ b/middleware/package.json @@ -6,10 +6,8 @@ "types": "build/index.d.ts", "type": "module", "scripts": { - "postbuild": "scripts/build.sh", - "build:devnet": "cross-env NODE_ENV=devnet sh scripts/build.sh", - "build:mainnet": "cross-env NODE_ENV=mainnet sh scripts/build.sh", - "lint": "prettier --write '**/*.ts'" + "build": "tsc --build", + "postbuild": "node ./esbuildconfig.js" }, "keywords": [], "author": "PaimaStudios", @@ -22,10 +20,9 @@ "@tower-defense/utils": "../utils" }, "devDependencies": { - "@esbuild-plugins/node-globals-polyfill": "^0.1.1", "@esbuild-plugins/node-modules-polyfill": "^0.1.4", "cross-env": "^7.0.3", "dotenv": "^16.4.1", - "esbuild": "^0.15.15" + "esbuild": "^0.24.0" } } diff --git a/middleware/scripts/build.sh b/middleware/scripts/build.sh deleted file mode 100755 index 8e4c822a..00000000 --- a/middleware/scripts/build.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -set -eu - -ENVIRONMENT=${NODE_ENV:-localhost} -echo "Packaging middleware for '$ENVIRONMENT'" -DOTENV_CONFIG_PATH="../.env.$ENVIRONMENT" node --require dotenv/config ./esbuildconfig.cjs - -echo "Vanilla middleware prepared in: packaged/middleware.js" -cp packaged/middleware.js packaged/paimaMiddleware.js -echo "Frontend-ready middleware (globals exported) prepared in: packaged/paimaMiddleware.js" diff --git a/middleware/src/index.ts b/middleware/src/index.ts index fa6f6c10..390e0a8c 100644 --- a/middleware/src/index.ts +++ b/middleware/src/index.ts @@ -20,7 +20,7 @@ import { queryEndpoints } from './endpoints/queries'; import { writeEndpoints } from './endpoints/write'; import { getMiddlewareConfig } from './endpoints/internal'; -import { WalletMode } from '@paima/providers'; +import { allInjectedWallets, WalletMode } from '@paima/providers'; import { LocalWallet } from '@thirdweb-dev/wallets'; import { AddressType, Result } from '@paima/utils'; @@ -61,8 +61,25 @@ const endpoints = { ...queryEndpoints, ...writeEndpoints, - async userWalletLogin(name: string): Promise> { - return localWalletResult; + async userWalletLogin(name: string): Promise> { + const result = await localWalletResult; + if (!result.success) { + return result; + } + + const all = await allInjectedWallets({ + gameName: GAME_NAME, + gameChainId: undefined, + }); + console.log('allInjectedWallets =', all); + + return { + success: true, + result: { + ...result.result, + detectedWallets: all[WalletMode.EvmInjected].map(w => w.metadata.displayName), + } + }; }, async externalWalletConnect(name: string): Promise> { diff --git a/package-lock.json b/package-lock.json index a3d8940e..16bed1bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -284,6 +284,7 @@ "@nomicfoundation/hardhat-ignition-viem": "^0.15.1", "@nomicfoundation/hardhat-toolbox-viem": "^3.0.0", "@openzeppelin/contracts": "^5.0.2", + "dotenv": "^16.4.5", "hardhat": "^2.19.4", "hardhat-abi-exporter": "github:paimaStudios/hardhat-abi-exporter#export-ts-wrapper", "hardhat-dependency-compiler": "^1.1.3", @@ -438,11 +439,10 @@ "@tower-defense/utils": "../utils" }, "devDependencies": { - "@esbuild-plugins/node-globals-polyfill": "^0.1.1", "@esbuild-plugins/node-modules-polyfill": "^0.1.4", "cross-env": "^7.0.3", "dotenv": "^16.4.1", - "esbuild": "^0.15.15" + "esbuild": "^0.24.0" } }, "middleware/node_modules/@eth-optimism/contracts": { @@ -2026,15 +2026,6 @@ "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==", "license": "MIT" }, - "node_modules/@esbuild-plugins/node-globals-polyfill": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.1.1.tgz", - "integrity": "sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==", - "dev": true, - "peerDependencies": { - "esbuild": "*" - } - }, "node_modules/@esbuild-plugins/node-modules-polyfill": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.1.4.tgz", @@ -2048,36 +2039,412 @@ "esbuild": "*" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", "cpu": [ - "arm" + "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ - "android" + "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "node_modules/@esbuild/win32-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", "cpu": [ - "loong64" + "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ - "linux" + "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint/eslintrc": { @@ -16712,360 +17079,43 @@ } }, "node_modules/esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" } }, "node_modules/escalade": { diff --git a/utils/src/index.ts b/utils/src/index.ts index faef2796..19bffb9a 100644 --- a/utils/src/index.ts +++ b/utils/src/index.ts @@ -13,15 +13,6 @@ export const GAME_NAME = 'Wrath of the Jungle'; // CONFIG VALUES export class GameENV extends ENV { - static get INDEXER_URI(): string { - return process.env.INDEXER_URI || ''; - } - static get STATEFUL_URI(): string { - return process.env.STATEFUL_URI || ''; - } - static get NFT_CONTRACT(): string { - return process.env.NFT_CONTRACT || ''; - } static get SHORT_CONFIG(): string { return process.env.SHORT_CONFIG || 'defaultdefault'; }