SamuelGalaxys's picture
Upload 1921 files
e4a10af
/// <reference types="node" />
import { Options } from ".";
import Context from "./Context";
import Language, { Localization } from "./Language";
import { PrettyVError } from "./util/format-verror";
export declare class NoDefaultLabelsError extends Error {
readonly lang: Language;
constructor(lang: Language, message?: string);
}
export declare class LabelEncodingError extends PrettyVError {
text?: Buffer;
constructor(labelDescription: string, lang: Language, cause?: Error | string, ...params: unknown[]);
}
export interface Labels<T = string> {
languageName?: T;
agree: T;
disagree: T;
print: T;
save: T;
message: T;
}
export declare namespace Labels {
type WithLanguageName<T = string> = Labels<T> & {
languageName: T;
};
type WithoutLanguageName<T = string> = Labels<T> & {
languageName?: never;
};
const names: readonly ("message" | "languageName" | "agree" | "disagree" | "print" | "save")[];
const descriptions: Readonly<{
languageName: string;
agree: string;
disagree: string;
print: string;
save: string;
message: string;
}>;
function fromPromises<T>(labels: Labels.WithoutLanguageName<Promise<T>>): Promise<Labels.WithoutLanguageName<T>>;
function fromPromises<T>(labels: Labels.WithLanguageName<Promise<T>>): Promise<Labels.WithLanguageName<T>>;
function fromPromises<T>(labels: Labels<Promise<T>>): Promise<Labels<T>>;
interface MapOptions<T, U> {
onNoLanguageName?(): U;
}
function mapAsync<T, U>(labels: Labels.WithLanguageName<T>, fun: (label: T, key: keyof Labels, labels: Labels<T>) => Promise<U>, options?: MapOptions<T, Promise<U>>): Promise<Labels.WithLanguageName<U>>;
function mapAsync<T, U>(labels: Labels.WithoutLanguageName<T>, fun: (label: T, key: keyof Labels, labels: Labels<T>) => Promise<U>, options?: MapOptions<T, Promise<U>> & {
onNoLanguageName?: never;
}): Promise<Labels.WithoutLanguageName<U>>;
function mapAsync<T, U>(labels: Labels<T>, fun: (label: T, key: keyof Labels, labels: Labels<T>) => Promise<U>, options: MapOptions<T, Promise<U>> & {
onNoLanguageName(): Promise<U>;
}): Promise<Labels.WithLanguageName<U>>;
function mapAsync<T, U>(labels: Labels<T>, fun: (label: T, key: keyof Labels, labels: Labels<T>) => Promise<U>, options?: MapOptions<T, Promise<U>>): Promise<Labels<U>>;
function map<T, U>(labels: Labels.WithLanguageName<T>, fun: (label: T, key: keyof Labels, labels: Labels<T>) => U, options?: MapOptions<T, U>): Labels.WithLanguageName<U>;
function map<T, U>(labels: Labels.WithoutLanguageName<T>, fun: (label: T, key: keyof Labels, labels: Labels<T>) => U, options?: MapOptions<T, U> & {
onNoLanguageName?: never;
}): Labels.WithoutLanguageName<U>;
function map<T, U>(labels: Labels<T>, fun: (label: T, key: keyof Labels, labels: Labels<T>) => U, options: MapOptions<T, U> & {
onNoLanguageName(): U;
}): Labels.WithLanguageName<U>;
function map<T, U>(labels: Labels<T>, fun: (label: T, key: keyof Labels, labels: Labels<T>) => U, options?: MapOptions<T, U>): Labels<U>;
interface ForEachOptions {
onNoLanguageName?(): void;
}
function forEach<T>(labels: Labels<T>, fun: (label: T, key: keyof Labels, labels: Labels<T>) => void, { onNoLanguageName }?: ForEachOptions): void;
interface CreateOptions {
includeLanguageName?: boolean;
}
function create<T>(fun: (key: keyof Labels, index: number) => T, options: CreateOptions & {
includeLanguageName: true;
}): Labels.WithLanguageName<T>;
function create<T>(fun: (key: keyof Labels, index: number) => T, options?: CreateOptions & {
includeLanguageName?: false;
}): Labels.WithoutLanguageName<T>;
function create<T>(fun: (key: keyof Labels, index: number) => T, options?: CreateOptions): Labels<T>;
function createAsync<T>(fun: (key: keyof Labels, index: number) => Promise<T>, options: CreateOptions & {
includeLanguageName: true;
}): Promise<Labels.WithLanguageName<T>>;
function createAsync<T>(fun: (key: keyof Labels, index: number) => Promise<T>, options?: CreateOptions & {
includeLanguageName?: false;
}): Promise<Labels.WithoutLanguageName<T>>;
function createAsync<T>(fun: (key: keyof Labels, index: number) => Promise<T>, options?: CreateOptions): Promise<Labels<T>>;
/**
* Prepares a label set for insertion into a disk image as a `STR#` resource.
*
* @remarks
* Throws {@link LabelEncodingError} if there is a problem encoding some of the labels.
*
* Throws {@link verror#MultiError} if there is more than one error.
*
* @param labels - The label set to prepare.
*
* @param lang - The language to prepare the label set for. This determines the target character set.
*
* @returns A `Buffer` in `STR#` format.
*/
function prepare(labels: Labels, lang: Language): Buffer;
/**
* Prepares the given language's default label set for insertion into a disk image as a `STR#` resource.
*
* @remarks
* Throws {@link NoDefaultLabelsError} if there is no default label set for the given language.
*
* Throws {@link LabelEncodingError} if there is a problem encoding some of the labels.
*
* Throws a {@link verror#MultiError} if there is more than one error.
*
* @param lang - The language to prepare the label set for.
*
* @param contextOrOptions - Context of an existing {@link dmgLicense} run, or options for one (when calling this function standalone).
*
* @returns A `Buffer` in `STR#` format.
*/
function prepareDefault(lang: Language): Buffer;
/**
* Prepares a label set for insertion into a disk image as a `STR#` resource.
*
* @remarks
* This function delegates to `prepareDefault` or `prepare` as appropriate.
*
* Throws {@link NoDefaultLabelsError} if `labels` is `null` or `undefined` and there is no default label set for the given language.
*
* Throws {@link LabelEncodingError} if there is a problem encoding some of the labels.
*
* Throws a {@link verror#MultiError} if there is more than one error.
*
* @param labels - An object describing the label set to prepare. If `null` or `undefined`, the default label set for the given language is used instead.
*
* @param lang - The language to prepare the label set for. This determines the target character set, and if `labels` is `null` or `undefined`, which language's default label set to use.
*
* @param contextOrOptions - Context of an existing {@link dmgLicense} run, or options for one (when calling this function standalone). Used to resolve relative paths if `labels` is a `LabelsSpec.LabelsRaw`.
*
* @returns A `Buffer` in `STR#` format.
*/
function prepareSpec(labels: LabelsSpec | null | undefined, lang: Language, contextOrOptions: Context | Options): Promise<Buffer>;
}
export default Labels;
export interface NoLabels extends Partial<Labels<undefined>> {
}
export declare type LabelsSpec = LabelsSpec.LabelsInline | LabelsSpec.LabelsRaw;
export declare namespace LabelsSpec {
interface LabelsInline extends Localization, Labels {
file?: never;
}
interface LabelsRaw extends Localization, NoLabels {
file: string;
}
}