UNPKG

zephyr-xpack-internal

Version:

Xpack internals for Zephyr

166 lines • 5.04 kB
import type { MfManifestConfig } from 'zephyr-agent'; export interface XPackConfiguration<Compiler> { context?: string; plugins?: (undefined | null | false | '' | 0 | ((this: Compiler, compiler: Compiler) => void) | WebpackPluginInstance<Compiler>)[]; output?: { publicPath?: string; library?: Library; } | any; } export type Library = string | string[] | { type?: string; amd?: string; }; export type XFederationExposes = Array<string | XFederationExposesObject> | XFederationExposesObject; interface XFederationExposesObject { [key: string]: string | string[] | XFederationExposesConfig; } interface XFederationExposesConfig { import: string | string[]; name?: string; } export type XFederationShared = Array<string | XFederationSharedObject> | XFederationSharedObject; interface XFederationSharedObject { [key: string]: string | XFederationSharedConfig; } interface XFederationSharedConfig { [key: string]: unknown; } interface WebpackPluginInstance<Compiler> { [index: string]: any; /** The run point of the plugin, required method. */ apply: (compiler: Compiler) => void; } export interface XFederatedRemotesConfig { name: string; library?: { type?: string; }; remotes?: (string | RemotesObject)[] | RemotesObject; exposes?: XFederationExposes; shared?: XFederationShared; /** Enhanced Module Federation manifest emission options. */ manifest?: MfManifestConfig; /** Repack: bundle file name */ filename?: string; /** * Repack: Temporary field for repack to store bundle name (in their case it's the * actual output js.bundle and they want to put it in filename field) */ bundle_name?: string; /** Runtime plugins for Module Federation */ runtimePlugins?: Array<string | [string, Record<string, unknown>]>; } export interface ModuleFederationPlugin { /** Enhanced MF plugin identifier (absent on native/legacy MF plugins). */ name?: string; apply: (compiler: unknown) => void; /** For Webpack/Rspack */ _options?: XFederatedRemotesConfig | { config: XFederatedRemotesConfig; }; /** For Nx Module Federation plugin */ options?: XFederatedRemotesConfig | { config: XFederatedRemotesConfig; }; /** Repack specific for now until Repack change how the config should be exposed */ config?: XFederatedRemotesConfig; /** NxModuleFederationPlugin */ configOverride?: Omit<XFederatedRemotesConfig, 'exposes' | 'remotes' | 'name' | 'shared' | 'filename'>; } interface RemotesObject { [index: string]: string | RemotesConfig | string[]; } interface RemotesConfig { /** Container locations from which modules should be resolved and loaded at runtime. */ external: string | string[]; /** The name of the share scope shared with this remote. */ shareScope?: string; } export interface XStatsModule { identifier?: string; reasons?: XStatsReason[]; moduleType?: string; nameForCondition?: string | null; size?: number; issuerName?: string | null; name?: string; } export interface XStatsChunk { [key: string]: unknown; names?: string[]; origins?: Array<{ loc?: string; }>; } export interface XCompiler { options: { output: { uniqueName: string; }; plugins: ModuleFederationPlugin[]; name: string | undefined; }; plugins: ModuleFederationPlugin[]; hooks: { compilation: { tap: (name: string, callback: (compilation: XCompilation) => void) => void; }; }; webpack: { RuntimeGlobals: { loadScript: string; }; }; rspack: { RuntimeGlobals: { loadScript: string; }; }; } export interface XCompilation { outputOptions: { trustedTypes: boolean; }; hooks: { /** This is for Webpack */ additionalModuleRuntimeRequirements: { tap: (name: string, callback: (module: XModule, set: Set<string>) => void) => void; }; /** This is for Rspack */ additionalTreeRuntimeRequirements: { tap: (name: string, callback: (chunk: XChunk, set: Set<string>) => void) => void; }; }; } export interface XModule { type: string; } export interface XChunk { id?: string | number | null; getAllReferencedChunks: () => Iterable<XChunk>; } interface XStatsReason { module?: string | null; userRequest?: string | null; resolvedModule?: string | null; } export interface XStats { compilation: { name?: string; namedChunks: ReadonlyMap<string, Readonly<XChunk>>; options: { context?: string; }; }; hasErrors?: () => boolean; toJson: () => XStatsCompilation; } export interface XStatsCompilation { publicPath?: string; hash?: string; modules?: XStatsModule[]; chunks?: XStatsChunk[]; } export {}; //# sourceMappingURL=xpack.types.d.mts.map