appium
Version: 
Automation for Apps.
143 lines • 5.08 kB
TypeScript
/**
 * The original ID of the Appium config schema.
 * We use this in the CLI to convert it to `argparse` options.
 */
export const APPIUM_CONFIG_SCHEMA_ID: "appium.json";
/**
 * The schema prop containing server-related options. Everything in here
 * is "native" to Appium.
 * Used by {@link flattenSchema} for transforming the schema into CLI args.
 */
export const SERVER_PROP_NAME: "server";
/**
 * An `ArgSpec` is a class representing metadata about an argument (or config
 * option) used for cross-referencing.
 *
 * This class has no instance methods, and is basically just a read-only "struct".
 * @template D
 */
export class ArgSpec<D> {
    /**
     * Return the schema ID (`$id`) for the **argument** given the parameters.
     *
     * If you need the "root" or "base" schema ID, use {@link ArgSpec.toSchemaBaseRef} instead.
     * @param {string} name - Argument name
     * @param {ExtensionType} [extType] - Extension type
     * @param {string} [extName] - Extension name
     * @returns {string} Schema ID
     */
    static toSchemaRef(name: string, extType?: ExtensionType, extName?: string): string;
    /**
     * Return the schema ID for an extension or the base schema ID.
     * @param {ExtensionType} [extType] - Extension type
     * @param {string} [extName] - Extension name
     */
    static toSchemaBaseRef(extType?: ExtensionType, extName?: string): string;
    /**
     * Return the unique ID for the argument given the parameters.
     * @param {string} name - Argument name
     * @param {ExtensionType} [extType] - Extension type
     * @param {string} [extName] - Extension name
     * @returns {string} Unique ID
     */
    static toArg(name: string, extType?: ExtensionType, extName?: string): string;
    /**
     * Normalizes a raw extension name (not including the type).
     * @param {string} extName - Extension name
     * @returns {string} Normalized extension name
     */
    static toNormalizedExtName(extName: string): string;
    /**
     * When given the root ID of a schema for an extension (`<extType>-<normalizedExtName>.json`) Returns an object containing the extension type and the _normalized_ extension name.
     * @param {string} schemaId - Root schema ID
     * @returns { {extType?: ExtensionType, normalizedExtName?: string} }
     */
    static extensionInfoFromRootSchemaId(schemaId: string): {
        extType?: ExtensionType;
        normalizedExtName?: string;
    };
    /**
     * Creates an `ArgSpec`
     *
     * @param {string} name - The canonical name of the argument. Corresponds to a key in a schema's
     * `properties` property.
     * @template D
     * @param {ArgSpecOptions<D>} [opts] - Options
     * @returns {Readonly<ArgSpec>}
     */
    static create<D_1>(name: string, opts?: ArgSpecOptions<D_1>): Readonly<ArgSpec<any>>;
    /**
     * Builds some computed fields and assigns them to the instance.
     *
     * Undefined properties are not assigned.
     *
     * The _constructor_ is private. Use {@link ArgSpec.create} instead.
     * @private
     * @param {string} name
     * @param {ArgSpecOptions<D>} opts
     */
    private constructor();
    /**
     * The canonical name of the argument. Corresponds to key in schema's `properties` prop.
     * @type {string}
     */
    name: string;
    /**
     * The `ExtensionType` of the argument. This will be set if the arg came from an extension;
     * otherwise it will be `undefined`.
     * @type {ExtensionType|undefined}
     */
    extType: ExtensionType | undefined;
    /**
     * The name of the extension, if this argument came from an extension.
     *
     * Otherwise `undefined`.
     * @type {string|undefined}
     */
    extName: string | undefined;
    /**
     * The schema ID (`$id`) for the argument.  This is automatically determined, and any user-provided `$id`s will be overwritten.
     *
     * @type {string}
     */
    ref: string;
    /**
     * The CLI argument, sans leading dashes.
     * @type {string}
     */
    arg: string;
    /**
     * The desired keypath for the argument after arguments have been parsed.
     *
     * Typically this is camelCased.  If the arg came from an extension, it will be prefixed with
     * `<extType>.<extName>.`
     * @type {string}
     */
    dest: string;
    /**
     * The same as {@link ArgSpec.dest} but without the leading `<extType>.<extName>.` prefix.
     */
    rawDest: string;
    /**
     * Whatever the default value of this argument is, as specified by the
     * `default` property of the schema.
     * @type {D|undefined}
     */
    defaultValue: D | undefined;
    /**
     * String representation, useful for debugging
     * @returns {string}
     */
    toString(): string;
}
/**
 * Options for {@link ArgSpec.create}
 */
export type ArgSpecOptions<D> = {
    extName?: string | undefined;
    extType?: import("@appium/types").ExtensionType | undefined;
    dest?: string | undefined;
    defaultValue?: D | undefined;
};
export type ExtensionType = import("@appium/types").ExtensionType;
//# sourceMappingURL=arg-spec.d.ts.map