///
import type { JsAssetInfo, JsLoaderContext, RawModuleRuleUse, RawOptions } from "@rspack/binding";
import { ResolveRequest } from "enhanced-resolve";
import { Compiler } from "../Compiler";
import { Logger } from "../logging/Logger";
import Hash from "../util/hash";
import { Mode, Resolve, RuleSetUseItem } from "./zod";
export interface ComposeJsUseOptions {
devtool: RawOptions["devtool"];
context: RawOptions["context"];
mode: RawOptions["mode"];
experiments: RawOptions["experiments"];
compiler: Compiler;
}
export interface SourceMap {
version: number;
sources: string[];
mappings: string;
file?: string;
sourceRoot?: string;
sourcesContent?: string[];
names?: string[];
}
export interface AdditionalData {
[index: string]: any;
}
export interface LoaderObject {
request: string;
path: string;
query: string;
fragment: string;
options: object | string | undefined;
ident: string;
normal: Function | undefined;
pitch: Function | undefined;
raw: boolean | undefined;
data: object | undefined;
pitchExecuted: boolean;
normalExecuted: boolean;
}
export interface LoaderContext {
version: 2;
resource: string;
resourcePath: string;
resourceQuery: string;
resourceFragment: string;
async(): (err?: Error | null, content?: string | Buffer, sourceMap?: string | SourceMap, additionalData?: AdditionalData) => void;
callback(err?: Error | null, content?: string | Buffer, sourceMap?: string | SourceMap, additionalData?: AdditionalData): void;
cacheable(cacheable?: boolean): void;
sourceMap: boolean;
rootContext: string;
context: string | null;
loaderIndex: number;
remainingRequest: string;
currentRequest: string;
previousRequest: string;
request: string;
/**
* An array of all the loaders. It is writeable in the pitch phase.
* loaders = [{request: string, path: string, query: string, module: function}]
*
* In the example:
* [
* { request: "/abc/loader1.js?xyz",
* path: "/abc/loader1.js",
* query: "?xyz",
* module: [Function]
* },
* { request: "/abc/node_modules/loader2/index.js",
* path: "/abc/node_modules/loader2/index.js",
* query: "",
* module: [Function]
* }
* ]
*/
loaders: LoaderObject[];
mode?: Mode;
hot?: boolean;
/**
* @param schema To provide the best performance, Rspack does not perform the schema validation. If your loader requires schema validation, please call scheme-utils or zod on your own.
*/
getOptions(schema?: any): OptionsType;
resolve(context: string, request: string, callback: (arg0: null | Error, arg1?: string | false, arg2?: ResolveRequest) => void): void;
getResolve(options: Resolve): (context: any, request: any, callback: any) => Promise;
getLogger(name: string): Logger;
emitError(error: Error): void;
emitWarning(warning: Error): void;
emitFile(name: string, content: string | Buffer, sourceMap?: string, assetInfo?: JsAssetInfo): void;
addDependency(file: string): void;
dependency(file: string): void;
addContextDependency(context: string): void;
addMissingDependency(missing: string): void;
clearDependencies(): void;
getDependencies(): string[];
getContextDependencies(): string[];
getMissingDependencies(): string[];
addBuildDependency(file: string): void;
importModule(request: string, options: {
publicPath: string;
baseUri: string;
}, callback: (err?: Error, res?: any) => void): void;
fs: any;
utils: {
absolutify: (context: string, request: string) => string;
contextify: (context: string, request: string) => string;
createHash: (algorithm?: string) => Hash;
};
query: string | OptionsType;
data: unknown;
_compiler: Compiler;
_compilation: Compiler["compilation"];
/**
* Internal field for interoperability.
* Do not use this in anywhere else.
*
* @internal
*/
__internal__context: JsLoaderContext;
/**
* Internal field for interoperability.
* Do not use this in anywhere else.
*
* @internal
*/
__internal__pushNativeDiagnostics: (diagnostics: any) => void;
}
export interface LoaderResult {
cacheable: boolean;
content: string | Buffer;
sourceMap?: string | SourceMap;
additionalData?: AdditionalData;
fileDependencies: string[];
contextDependencies: string[];
missingDependencies: string[];
buildDependencies: string[];
}
export interface LoaderDefinitionFunction {
(this: LoaderContext & ContextAdditions, content: string, sourceMap?: string | SourceMap, additionalData?: AdditionalData): string | void | Buffer | Promise;
}
export interface PitchLoaderDefinitionFunction {
(this: LoaderContext & ContextAdditions, remainingRequest: string, previousRequest: string, data: object): string | void | Buffer | Promise;
}
export type LoaderDefinition = LoaderDefinitionFunction & {
raw?: false;
pitch?: PitchLoaderDefinitionFunction;
};
export declare function createRawModuleRuleUses(uses: RuleSetUseItem | RuleSetUseItem[], path: string, options: ComposeJsUseOptions): RawModuleRuleUse[];
export declare function isUseSourceMap(devtool: RawOptions["devtool"]): boolean;
export declare function isUseSimpleSourceMap(devtool: RawOptions["devtool"]): boolean;