import { styleLoaders as taStyles, tsLoader } from "@lonelyplanet/travel-agent/dist/webpack/loaders";
import * as ExtractTextPlugin from "extract-text-webpack-plugin";
import * as path from "path";
import * as w from "webpack";
import * as pkg from "./package.json";

const mode = "development";

const styleLoaders = { ...taStyles };

styleLoaders.css.options.localIdentName = "lp-global-[local]";
styleLoaders.css.options.context = path.resolve(__dirname, "src");

export const extractCssLoader = {
  test: /\.css$/,
  include: /src/,
  loader: ExtractTextPlugin.extract({
    fallback: "style-loader",
    use: [styleLoaders.css, styleLoaders.postcss],
  }),
};

const tsLoaderCopy = { ...tsLoader };
tsLoaderCopy.use[0].options = { configFile: path.resolve("./tsconfig-es.json") };

const rules = [
  tsLoaderCopy,
  extractCssLoader,
];

const config: w.Configuration = {
  mode,
  entry: {
    core: "./src/client.tsx",
  },
  output: {
    path: path.resolve(__dirname, "lib"),
    chunkFilename: "[name]-chunk.js",
    publicPath: `http://localhost:8080/assets/${pkg.version}/`,
    libraryTarget: "umd",
    jsonpFunction: "webpackJsonpDotcomCore"
  },
  module: {
    rules,
  },
  resolve: {
    extensions: [".js", ".jsx", ".ts", ".tsx"],
  },
  plugins: [
    new ExtractTextPlugin("[name].css", {
      disable: false,
      allChunks: true,
    }),
    new w.HotModuleReplacementPlugin(),
  ],
};

export default config;
