/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

const path = require("path");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");

const distPath = path.resolve(__dirname, "dist");

const node_env = process.env.NODE_ENV ? process.env.NODE_ENV : 'production';

const config = {
	mode: node_env,
	entry: "./src/index.js",
	output: {
		library: "LineageHelper",
		libraryTarget: "umd",
		path: distPath,
		filename: "index.js"
	},
	plugins: [new MiniCssExtractPlugin({ filename: "styles.css" })],
	externals: {
		//don't bundle the 'react' npm package with our bundle.js
		//but get it from a global 'React' variable
		d3: "d3",
		"dagre-d3": "dagreD3",
		platform: "platform",
		dagre: "dagre",
		graphlib: "graphlib"
	},
	module: {
		rules: [
			{
				test: /\.m?js$/,
				exclude: /(node_modules|bower_components)/,
				use: {
					loader: "babel-loader",
					options: {
						presets: ["@babel/preset-env"],
						plugins: ["@babel/plugin-transform-class-properties"]
					}
				}
			},
			{
				test: /\.s[ac]ss$/i,
				use: [
					MiniCssExtractPlugin.loader,
					// Translates CSS into CommonJS
					"css-loader",
					// Compiles Sass to CSS
					"sass-loader"
				]
			}
		]
	}
};

if (process.env.NODE_ENV === "development") {
	config.devtool = "inline-source-map";
}
module.exports = config;