1 | import { AsyncOptionalCreatable } from '@salesforce/kit';
|
2 | import { AnyJson, Dictionary, JsonMap, Optional } from '@salesforce/ts-types';
|
3 | import { Config, ConfigPropertyMeta } from './config';
|
4 | /**
|
5 | * Information about a config property.
|
6 | */
|
7 | export 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 | */
|
56 | export 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 { ConfigAggregator.reload} was not called, the config value may be encrypted.
|
74 | *
|
75 | * 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 | }
|
193 | export 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 | */
|
221 | export 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 |