From eda3b3d3db71b4ea1d5361620e968b2a3fa3370b Mon Sep 17 00:00:00 2001 From: Mark Sinclair Date: Tue, 14 Dec 2021 15:55:58 +0000 Subject: [PATCH] Network Explorer: configure URLs with `.env` file --- explorer/.env.example | 3 ++ explorer/package-lock.json | 60 +++++++++++++++++++++++++++++++++++ explorer/package.json | 1 + explorer/src/api/constants.ts | 21 ++++++------ explorer/webpack.common.js | 3 ++ 5 files changed, 77 insertions(+), 11 deletions(-) create mode 100644 explorer/.env.example diff --git a/explorer/.env.example b/explorer/.env.example new file mode 100644 index 0000000000..4815adc055 --- /dev/null +++ b/explorer/.env.example @@ -0,0 +1,3 @@ +EXPLORER_API_URL=https://testnet-milhon-explorer.nymtech.net +VALIDATOR_API_URL=https://testnet-milhon-validator1.nymtech.net +BIG_DIPPER_URL=https://testnet-milhon-blocks.nymtech.net diff --git a/explorer/package-lock.json b/explorer/package-lock.json index 058a29c8b3..b1c9eee465 100644 --- a/explorer/package-lock.json +++ b/explorer/package-lock.json @@ -50,6 +50,7 @@ "clean-webpack-plugin": "^4.0.0", "css-loader": "^6.2.0", "css-minimizer-webpack-plugin": "^3.0.2", + "dotenv-webpack": "^7.0.3", "eslint": "7.32.0", "eslint-config-airbnb": "18.2.1", "eslint-config-prettier": "8.3.0", @@ -6198,6 +6199,39 @@ "tslib": "^2.0.3" } }, + "node_modules/dotenv-defaults": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", + "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", + "dev": true, + "dependencies": { + "dotenv": "^8.2.0" + } + }, + "node_modules/dotenv-defaults/node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-webpack": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-7.0.3.tgz", + "integrity": "sha512-O0O9pOEwrk+n1zzR3T2uuXRlw64QxHSPeNN1GaiNBloQFNaCUL9V8jxSVz4jlXXFP/CIqK8YecWf8BAvsSgMjw==", + "dev": true, + "dependencies": { + "dotenv-defaults": "^2.0.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "webpack": "^4 || ^5" + } + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -21882,6 +21916,32 @@ "tslib": "^2.0.3" } }, + "dotenv-defaults": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", + "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", + "dev": true, + "requires": { + "dotenv": "^8.2.0" + }, + "dependencies": { + "dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true + } + } + }, + "dotenv-webpack": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-7.0.3.tgz", + "integrity": "sha512-O0O9pOEwrk+n1zzR3T2uuXRlw64QxHSPeNN1GaiNBloQFNaCUL9V8jxSVz4jlXXFP/CIqK8YecWf8BAvsSgMjw==", + "dev": true, + "requires": { + "dotenv-defaults": "^2.0.2" + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", diff --git a/explorer/package.json b/explorer/package.json index 5d296ce0f6..553adb4ecb 100644 --- a/explorer/package.json +++ b/explorer/package.json @@ -45,6 +45,7 @@ "clean-webpack-plugin": "^4.0.0", "css-loader": "^6.2.0", "css-minimizer-webpack-plugin": "^3.0.2", + "dotenv-webpack": "^7.0.3", "eslint": "7.32.0", "eslint-config-airbnb": "18.2.1", "eslint-config-prettier": "8.3.0", diff --git a/explorer/src/api/constants.ts b/explorer/src/api/constants.ts index 88037559ce..2405f0651b 100644 --- a/explorer/src/api/constants.ts +++ b/explorer/src/api/constants.ts @@ -1,17 +1,16 @@ // master APIs -export const MASTER_URL = 'https://testnet-milhon-explorer.nymtech.net'; -export const MASTER_VALIDATOR_URL = - 'https://testnet-milhon-validator1.nymtech.net'; -export const BIG_DIPPER = 'https://testnet-milhon-blocks.nymtech.net'; +export const API_BASE_URL = process.env.EXPLORER_API_URL; +export const VALIDATOR_API_BASE_URL = process.env.VALIDATOR_API_URL; +export const BIG_DIPPER = process.env.BIG_DIPPER_URL; // specific API routes -export const MIXNODE_PING = `${MASTER_URL}/api/ping`; -export const MIXNODES_API = `${MASTER_URL}/api/mix-node`; -export const GATEWAYS_API = `${MASTER_VALIDATOR_URL}/api/v1/gateways`; -export const VALIDATORS_API = `${MASTER_VALIDATOR_URL}/validators`; -export const BLOCK_API = `${MASTER_VALIDATOR_URL}/block`; -export const COUNTRY_DATA_API = `${MASTER_URL}/api/countries`; -export const UPTIME_STORY_API = `${MASTER_VALIDATOR_URL}/api/v1/status/mixnode`; // add ID then '/history' to this. +export const MIXNODE_PING = `${API_BASE_URL}/ping`; +export const MIXNODES_API = `${API_BASE_URL}/mix-nodes`; +export const GATEWAYS_API = `${VALIDATOR_API_BASE_URL}/api/v1/gateways`; +export const VALIDATORS_API = `${VALIDATOR_API_BASE_URL}/validators`; +export const BLOCK_API = `${VALIDATOR_API_BASE_URL}/block`; +export const COUNTRY_DATA_API = `${API_BASE_URL}/countries`; +export const UPTIME_STORY_API = `${VALIDATOR_API_BASE_URL}/api/v1/status/mixnode`; // add ID then '/history' to this. // errors export const MIXNODE_API_ERROR = diff --git a/explorer/webpack.common.js b/explorer/webpack.common.js index 9b84f6170c..894bc708cc 100644 --- a/explorer/webpack.common.js +++ b/explorer/webpack.common.js @@ -5,6 +5,7 @@ const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); const WebpackFavicons = require('webpack-favicons'); +const Dotenv = require('dotenv-webpack'); module.exports = { entry: './src/index.tsx', @@ -78,6 +79,8 @@ module.exports = { new WebpackFavicons({ src: 'src/logo.svg', }), + + new Dotenv(), ], output: { path: path.resolve(__dirname, 'dist'),