| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import { parse } from "./context-D49cMElb.js";
- import { createRequire } from "node:module";
- import { resolve } from "node:path";
- import { Buffer } from "node:buffer";
- import process from "node:process";
- //#region src/webpack/context.ts
- function contextOptionsFromCompilation(compilation) {
- return {
- addWatchFile(file) {
- (compilation.fileDependencies ?? compilation.compilationDependencies).add(file);
- },
- getWatchFiles() {
- return Array.from(compilation.fileDependencies ?? compilation.compilationDependencies);
- }
- };
- }
- const require = createRequire(import.meta.url);
- function getSource(fileSource) {
- const webpack = require("webpack");
- return new webpack.sources.RawSource(typeof fileSource === "string" ? fileSource : Buffer.from(fileSource.buffer));
- }
- function createBuildContext(options, compiler, compilation, loaderContext) {
- return {
- parse,
- addWatchFile(id) {
- options.addWatchFile(resolve(process.cwd(), id));
- },
- emitFile(emittedFile) {
- const outFileName = emittedFile.fileName || emittedFile.name;
- if (emittedFile.source && outFileName) {
- if (!compilation) throw new Error("unplugin/webpack: emitFile outside supported hooks (buildStart, buildEnd, load, transform, watchChange)");
- compilation.emitAsset(outFileName, getSource(emittedFile.source));
- }
- },
- getWatchFiles() {
- return options.getWatchFiles();
- },
- getNativeBuildContext() {
- return {
- framework: "webpack",
- compiler,
- compilation,
- loaderContext
- };
- }
- };
- }
- function createContext(loader) {
- return {
- error: (error) => loader.emitError(normalizeMessage(error)),
- warn: (message) => loader.emitWarning(normalizeMessage(message))
- };
- }
- function normalizeMessage(error) {
- const err = new Error(typeof error === "string" ? error : error.message);
- if (typeof error === "object") {
- err.stack = error.stack;
- err.cause = error.meta;
- }
- return err;
- }
- //#endregion
- export { contextOptionsFromCompilation, createBuildContext, createContext, normalizeMessage };
|