All checks were successful
check / check (push) Successful in 18s
build.js records which emitted bundles contain src/shared/constants.js, and constants.js carries a marker constant-folded from DEBUG itself. script/verify-build cross-checks the two and fails on every way of not knowing, so deleting the __BUILD_DEBUG__ define now breaks the build instead of shipping a live debug branch.
73 lines
2.8 KiB
JavaScript
73 lines
2.8 KiB
JavaScript
// DEBUG is a build-time constant injected by esbuild's define in build.js
|
|
// (see src/shared/buildInfo.js for the same pattern). It is false unless the
|
|
// bundle was produced with AUTISTMASK_DEBUG=1, and it is false whenever the
|
|
// module is loaded outside a bundle (tests, plain require). It must never be
|
|
// derived from anything the user can change at runtime: it is what gates the
|
|
// hardcoded test mnemonic below.
|
|
/* global __BUILD_DEBUG__ */
|
|
const DEBUG = typeof __BUILD_DEBUG__ !== "undefined" ? __BUILD_DEBUG__ : false;
|
|
|
|
// Machine-readable record of the compiled DEBUG state, read out of the emitted
|
|
// bundles by script/verify-build. It is derived from DEBUG itself so the two
|
|
// cannot disagree, and it is a plain string literal rather than a minifier
|
|
// artifact like `DEBUG:!1`, so the check does not depend on esbuild's output
|
|
// staying byte-stable across versions.
|
|
//
|
|
// The ambiguity is the point. When DEBUG is known at build time the bundler
|
|
// folds this to exactly one of the two literals. When it is not — which is
|
|
// exactly what happens if the __BUILD_DEBUG__ define goes missing from
|
|
// build.js — the ternary survives, both literals appear in the bundle, and
|
|
// verify-build fails rather than guessing.
|
|
const BUILD_DEBUG_MARKER = DEBUG
|
|
? "autistmask-build-debug=on"
|
|
: "autistmask-build-debug=off";
|
|
|
|
const DEBUG_MNEMONIC =
|
|
"cube evolve unfold result inch risk jealous skill hotel bulb night wreck";
|
|
|
|
const ETHEREUM_MAINNET_CHAIN_ID = "0x1";
|
|
const ETHEREUM_SEPOLIA_CHAIN_ID = "0xaa36a7";
|
|
|
|
const DEFAULT_RPC_URL = "https://ethereum-rpc.publicnode.com";
|
|
|
|
const DEFAULT_BLOCKSCOUT_URL = "https://eth.blockscout.com/api/v2";
|
|
|
|
const BIP44_ETH_PATH = "m/44'/60'/0'/0";
|
|
|
|
const ERC20_ABI = [
|
|
"function name() view returns (string)",
|
|
"function symbol() view returns (string)",
|
|
"function decimals() view returns (uint8)",
|
|
"function balanceOf(address) view returns (uint256)",
|
|
"function transfer(address to, uint256 amount) returns (bool)",
|
|
"function allowance(address owner, address spender) view returns (uint256)",
|
|
"function approve(address spender, uint256 amount) returns (bool)",
|
|
];
|
|
|
|
// Known null/burn addresses that permanently destroy funds.
|
|
const BURN_ADDRESSES = new Set([
|
|
"0x0000000000000000000000000000000000000000",
|
|
"0x0000000000000000000000000000000000000001",
|
|
"0x000000000000000000000000000000000000dead",
|
|
"0xdead000000000000000000000000000000000000",
|
|
"0x00000000000000000000000000000000deadbeef",
|
|
]);
|
|
|
|
function isBurnAddress(address) {
|
|
return BURN_ADDRESSES.has(address.toLowerCase());
|
|
}
|
|
|
|
module.exports = {
|
|
DEBUG,
|
|
BUILD_DEBUG_MARKER,
|
|
DEBUG_MNEMONIC,
|
|
ETHEREUM_MAINNET_CHAIN_ID,
|
|
ETHEREUM_SEPOLIA_CHAIN_ID,
|
|
DEFAULT_RPC_URL,
|
|
DEFAULT_BLOCKSCOUT_URL,
|
|
BIP44_ETH_PATH,
|
|
ERC20_ABI,
|
|
BURN_ADDRESSES,
|
|
isBurnAddress,
|
|
};
|