@pact-toolbox/unplugin
Version:
46 lines (44 loc) • 1.64 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";
//#region src/rsbuild.ts
const pluginPactToolbox = (options) => ({
name: PLUGIN_NAME,
async setup(api) {
const toolboxConfig = await resolveConfig();
const networkConfig = getNetworkConfig(toolboxConfig);
let client = new PactToolboxClient(toolboxConfig);
let network = null;
api.onCloseDevServer(async () => {
if (network) {
const shutdownSpinner = spinner({ indicator: "timer" });
try {
shutdownSpinner.start("Shutting down network...");
await Promise.race([network?.stop(), new Promise((resolve) => setTimeout(resolve, 1e4))]);
} finally {
shutdownSpinner.stop("Network stopped!");
}
}
});
api.modifyRsbuildConfig((config) => {
if (!config.source) config.source = {};
if (!config.source.define) config.source.define = {};
const networkConfig$1 = getSerializableNetworkConfig(toolboxConfig);
config.source.define["globalThis.__PACT_TOOLBOX_NETWORK_CONFIG__"] = JSON.stringify(networkConfig$1);
});
api.onAfterStartDevServer(async () => {
const { network: networkInstance, client: networkClient } = await createPactToolboxNetwork({
client,
networkConfig,
isServe: true,
isTest: false
}, toolboxConfig, options);
network = networkInstance;
client = networkClient;
});
}
});
//#endregion
export { pluginPactToolbox };
//# sourceMappingURL=rsbuild.js.map