You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
2.5 KiB
31 lines
2.5 KiB
import { ConfigPlugin, ExportedConfig, ExportedConfigWithProps, ModPlatform } from '../Plugin.types';
|
|
import { BaseModOptions } from './withMod';
|
|
export declare type ForwardedBaseModOptions = Partial<Pick<BaseModOptions, 'saveToInternal' | 'skipEmptyMod'>>;
|
|
export declare type BaseModProviderMethods<ModType, Props extends ForwardedBaseModOptions = ForwardedBaseModOptions> = {
|
|
getFilePath: (config: ExportedConfigWithProps<ModType>, props: Props) => Promise<string> | string;
|
|
read: (filePath: string, config: ExportedConfigWithProps<ModType>, props: Props) => Promise<ModType> | ModType;
|
|
write: (filePath: string, config: ExportedConfigWithProps<ModType>, props: Props) => Promise<void> | void;
|
|
/**
|
|
* If the mod supports introspection, and avoids making any filesystem modifications during compilation.
|
|
* By enabling, this mod, and all of its descendants will be run in introspection mode.
|
|
* This should only be used for static files like JSON or XML, and not for application files that require regexes,
|
|
* or complex static files that require other files to be generated like Xcode `.pbxproj`.
|
|
*/
|
|
isIntrospective?: boolean;
|
|
};
|
|
export declare type CreateBaseModProps<ModType, Props extends ForwardedBaseModOptions = ForwardedBaseModOptions> = {
|
|
methodName: string;
|
|
platform: ModPlatform;
|
|
modName: string;
|
|
} & BaseModProviderMethods<ModType, Props>;
|
|
export declare function createBaseMod<ModType, Props extends ForwardedBaseModOptions = ForwardedBaseModOptions>({ methodName, platform, modName, getFilePath, read, write, isIntrospective, }: CreateBaseModProps<ModType, Props>): ConfigPlugin<Props | void>;
|
|
export declare function assertModResults(results: any, platformName: string, modName: string): any;
|
|
export declare function createPlatformBaseMod<ModType, Props extends ForwardedBaseModOptions = ForwardedBaseModOptions>({ modName, ...props }: Omit<CreateBaseModProps<ModType, Props>, 'methodName'>): ConfigPlugin<void | Props>;
|
|
/** A TS wrapper for creating provides */
|
|
export declare function provider<ModType, Props extends ForwardedBaseModOptions = ForwardedBaseModOptions>(props: BaseModProviderMethods<ModType, Props>): BaseModProviderMethods<ModType, Props>;
|
|
/** Plugin to create and append base mods from file providers */
|
|
export declare function withGeneratedBaseMods<ModName extends string>(config: ExportedConfig, { platform, providers, ...props }: ForwardedBaseModOptions & {
|
|
platform: ModPlatform;
|
|
providers: Partial<Record<ModName, BaseModProviderMethods<any, any>>>;
|
|
}): ExportedConfig;
|