UNPKG

7.88 kBTypeScriptView Raw
1import { AsyncOptionalCreatable } from '@salesforce/kit';
2import { AnyJson, Dictionary, JsonMap, Optional } from '@salesforce/ts-types';
3import { Config, ConfigPropertyMeta } from './config';
4/**
5 * Information about a config property.
6 */
7export interface ConfigInfo {
8 /**
9 * key The config key.
10 */
11 key: string;
12 /**
13 * The location of the config property.
14 */
15 location?: ConfigAggregator.Location;
16 /**
17 * The config value.
18 */
19 value?: AnyJson;
20 /**
21 * The path of the config value.
22 */
23 path?: string;
24 /**
25 * `true` if the config property is in the local project.
26 */
27 isLocal: () => boolean;
28 /**
29 * `true` if the config property is in the global space.
30 */
31 isGlobal: () => boolean;
32 /**
33 * `true` if the config property is an environment variable.
34 */
35 isEnvVar: () => boolean;
36 /**
37 * True if the config property is deprecated.
38 */
39 deprecated?: boolean;
40}
41/**
42 * Aggregate global and local project config files, as well as environment variables for
43 * `config.json`. The resolution happens in the following bottom-up order:
44 *
45 * 1. Environment variables (`SF_LOG_LEVEL`)
46 * 1. Workspace settings (`<workspace-root>/.sf/config.json`)
47 * 1. Global settings (`$HOME/.sf/config.json`)
48 *
49 * Use {@link ConfigAggregator.create} to instantiate the aggregator.
50 *
51 * ```
52 * const aggregator = await ConfigAggregator.create();
53 * console.log(aggregator.getPropertyValue('target-org'));
54 * ```
55 */
56export declare class ConfigAggregator extends AsyncOptionalCreatable<ConfigAggregator.Options> {
57 protected static instance: AsyncOptionalCreatable;
58 protected static encrypted: boolean;
59 private allowedProperties;
60 private localConfig?;
61 private globalConfig;
62 private envVars;
63 private get config();
64 /**
65 * **Do not directly construct instances of this class -- use {@link ConfigAggregator.create} instead.**
66 *
67 * @ignore
68 */
69 constructor(options?: ConfigAggregator.Options);
70 static create<P, T extends AsyncOptionalCreatable<P>>(this: new (options?: ConfigAggregator.Options) => T, options?: ConfigAggregator.Options): Promise<T>;
71 /**
72 * Get the info for a given key. If the ConfigAggregator was not asynchronously created OR
73 * the {@link ConfigAggregator.reload} was not called, the config value may be encrypted.
74 *
75 * @param key The config key.
76 */
77 static getValue(key: string): ConfigInfo;
78 /**
79 * Get the static ConfigAggregator instance. If one doesn't exist, one will be created with
80 * the **encrypted** config values. Encrypted config values need to be resolved
81 * asynchronously by calling {@link ConfigAggregator.reload}
82 */
83 private static getInstance;
84 /**
85 * Initialize this instances async dependencies.
86 */
87 init(): Promise<void>;
88 /**
89 * Get a resolved config property.
90 *
91 * **Throws** *{@link SfError}{ name: 'UnknownConfigKeyError' }* An attempt to get a property that's not supported.
92 *
93 * @param key The key of the property.
94 */
95 getPropertyValue<T extends AnyJson>(key: string): Optional<T>;
96 /**
97 * Get a resolved config property meta.
98 *
99 * **Throws** *{@link SfError}{ name: 'UnknownConfigKeyError' }* An attempt to get a property that's not supported.
100 *
101 * @param key The key of the property.
102 */
103 getPropertyMeta(key: string): ConfigPropertyMeta;
104 /**
105 * Get a resolved config property.
106 *
107 * @param key The key of the property.
108 * @param throwOnDeprecation True, if you want an error throw when reading a deprecated config
109 */
110 getInfo(key: string, throwOnDeprecation?: boolean): ConfigInfo;
111 /**
112 * Gets a resolved config property location.
113 *
114 * For example, `getLocation('logLevel')` will return:
115 * 1. `Location.GLOBAL` if resolved to an environment variable.
116 * 1. `Location.LOCAL` if resolved to local project config.
117 * 1. `Location.ENVIRONMENT` if resolved to the global config.
118 *
119 * @param key The key of the property.
120 */
121 getLocation(key: string): Optional<ConfigAggregator.Location>;
122 /**
123 * Get a resolved file path or environment variable name of the property.
124 *
125 * For example, `getPath('logLevel')` will return:
126 * 1. `$SF_LOG_LEVEL` if resolved to an environment variable.
127 * 1. `./.sf/config.json` if resolved to the local config.
128 * 1. `~/.sf/config.json` if resolved to the global config.
129 * 1. `undefined`, if not resolved.
130 *
131 * **Note:** that the path returned may be the absolute path instead of
132 * relative paths such as `./` and `~/`.
133 *
134 * @param key The key of the property.
135 */
136 getPath(key: string): Optional<string>;
137 /**
138 * Get all resolved config property keys, values, locations, and paths.
139 *
140 * ```
141 * > console.log(aggregator.getConfigInfo());
142 * [
143 * { key: 'logLevel', val: 'INFO', location: 'Environment', path: '$SF_LOG_LEVEL'}
144 * { key: 'target-org', val: '<username>', location: 'Local', path: './.sf/config.json'}
145 * ]
146 * ```
147 */
148 getConfigInfo(): ConfigInfo[];
149 /**
150 * Get the local project config instance.
151 */
152 getLocalConfig(): Config | undefined;
153 /**
154 * Get the global config instance.
155 */
156 getGlobalConfig(): Config;
157 /**
158 * Get the resolved config object from the local, global and environment config instances.
159 */
160 getConfig(): JsonMap;
161 /**
162 * Get the config properties that are environment variables.
163 */
164 getEnvVars(): Dictionary<string>;
165 /**
166 * Re-read all property configurations from disk.
167 */
168 reload(): Promise<ConfigAggregator>;
169 /**
170 * Add an allowed config property.
171 */
172 addAllowedProperties(configMetas: ConfigPropertyMeta | ConfigPropertyMeta[]): void;
173 /**
174 * Set the allowed properties.
175 *
176 * @param properties The properties to set.
177 */
178 protected setAllowedProperties(properties: ConfigPropertyMeta[]): void;
179 /**
180 * Get the allowed properties.
181 */
182 protected getAllowedProperties(): ConfigPropertyMeta[];
183 /**
184 * Loads all the properties and aggregates them according to location.
185 */
186 protected loadProperties(): Promise<void>;
187 /**
188 * Loads all the properties and aggregates them according to location.
189 */
190 private loadPropertiesSync;
191 private resolveProperties;
192}
193export declare namespace ConfigAggregator {
194 /**
195 * An enum of all possible locations for a config value.
196 */
197 const enum Location {
198 /**
199 * Represents the global config.
200 */
201 GLOBAL = "Global",
202 /**
203 * Represents the local project config.
204 */
205 LOCAL = "Local",
206 /**
207 * Represents environment variables.
208 */
209 ENVIRONMENT = "Environment"
210 }
211 type Options = {
212 customConfigMeta?: ConfigPropertyMeta[];
213 };
214}
215/**
216 * A ConfigAggregator that will work with deprecated config vars (e.g. defaultusername, apiVersion).
217 * We do NOT recommend using this class unless you absolutelty have to.
218 *
219 * @deprecated
220 */
221export declare class SfdxConfigAggregator extends ConfigAggregator {
222 protected static instance: AsyncOptionalCreatable;
223 protected static encrypted: boolean;
224 static create<P, T extends AsyncOptionalCreatable<P>>(this: new (options?: ConfigAggregator.Options) => T, options?: ConfigAggregator.Options): Promise<T>;
225 getPropertyMeta(key: string): ConfigPropertyMeta;
226 getPropertyValue<T extends AnyJson>(key: string): Optional<T>;
227 getInfo(key: string): ConfigInfo;
228 getLocation(key: string): Optional<ConfigAggregator.Location>;
229 getPath(key: string): Optional<string>;
230 getConfigInfo(): ConfigInfo[];
231 private translate;
232}
233
\No newline at end of file