@pact-toolbox/unplugin
Version:
51 lines (49 loc) • 1.91 kB
JavaScript
import { PLUGIN_NAME, createPactToolboxNetwork } from "./utils-caVmxe1_.js";
import { getNetworkConfig, getSerializableNetworkConfig, resolveConfig } from "@pact-toolbox/config";
import { PactToolboxClient } from "@pact-toolbox/runtime";
import { spinner } from "@pact-toolbox/utils";
import { createWebpackPlugin } from "unplugin";
import webpack from "webpack";
//#region src/webpack.ts
const unpluginFactory = (options) => {
return {
name: PLUGIN_NAME,
enforce: "post",
webpack: async (compiler) => {
const toolboxConfig = await resolveConfig();
const networkConfig = getNetworkConfig(toolboxConfig);
let client = new PactToolboxClient(toolboxConfig);
let network = null;
compiler.hooks.done.tapPromise(PLUGIN_NAME, async () => {
const networkConfig$1 = getSerializableNetworkConfig(toolboxConfig);
const define = new webpack.DefinePlugin({ "globalThis.__PACT_TOOLBOX_NETWORK_CONFIG__": JSON.stringify(networkConfig$1) });
define.apply(compiler);
});
compiler.hooks.afterDone.tap(PLUGIN_NAME, async () => {
if (compiler.options.mode === "development") {
const { network: networkInstance, client: networkClient } = await createPactToolboxNetwork({
isServe: true,
isTest: false,
client,
networkConfig
}, toolboxConfig, options);
network = networkInstance;
client = networkClient;
}
});
compiler.hooks.shutdown.tap(PLUGIN_NAME, async () => {
const shutdownSpinner = spinner({ indicator: "timer" });
if (network) try {
shutdownSpinner.start("Shutting down network...");
await Promise.race([network.stop(), new Promise((resolve) => setTimeout(resolve, 1e4))]);
} finally {
shutdownSpinner.stop("Network stopped!");
}
});
}
};
};
var webpack_default = createWebpackPlugin(unpluginFactory);
//#endregion
export { webpack_default };
//# sourceMappingURL=webpack-DmorBFG2.js.map