text: const { DefinePlugin } = require("../../../../");
  const currentWatchStep = require("../../../helpers/currentWatchStep");
  
  /** @type {import("../../../../").Configuration} */
  module.exports = {
  	cache: {
  		type: "memory",
  		cacheUnaffected: false
  	},
  	plugins: [
  		compiler => {
  			const base = {
  				DEFINE: "{}",
  				RUN: DefinePlugin.runtimeValue(() => +(currentWatchStep.step || 0), [])
  			};
  			const defines = [
  				{
  					...base,
  					"DEFINE.A": 0,
  					"DEFINE.B": 2
  				},
  				{
  					// change
  					...base,
  					"DEFINE.A": 1,
  					"DEFINE.B": 2
  				},
  				{
  					// add
  					...base,
  					"DEFINE.A": 1,
  					"DEFINE.B": 2,
  					"DEFINE.C": 3
  				},
  				{
  					// remove
  					...base,
  					"DEFINE.A": 1,
  					"DEFINE.C": 3
  				}
  			];
  			compiler.hooks.compilation.tap("webpack.config", (...args) => {
  				const plugin = new DefinePlugin(defines[+(currentWatchStep.step || 0)]);
  				plugin.apply(
  					/** @type {any} */ ({
  						hooks: {
  							compilation: {
  								tap: (name, fn) => {
  									fn(...args);
  								}
  							}
  						}
  					})
  				);
  			});
  		}
  	]
  };
  