// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.


/**
 * Constants to consistently refer to configuration parameters configured in
 * package.json.
 */


/**
 * This is the root key for all configuration items for this extension.
 */
export const CONFIG_ROOT_NAME = 'fuchsia';

/**
 * Flag for enabling debug logging and behaviors.
 */
export const CONFIG_DEBUG_FLAG = `${CONFIG_ROOT_NAME}.debug`;

/**
 * Timeout for waiting for responses and connections.
 */
export const CONFIG_CONNECT_TIMEOUT = `${CONFIG_ROOT_NAME}.zxdb.timeout`;


/**
 * Commands used outside of extension.ts
 */

// TODO(fxbug.dev/95634): Organize command ids across the extension.
export const COMMAND_TARGET_SELECT_ID = 'fuchsia.target.select';

