@salesforce/core 3.31.7 → 3.31.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/LICENSE.txt +11 -11
  2. package/README.md +222 -222
  3. package/lib/config/aliasesConfig.d.ts +12 -12
  4. package/lib/config/aliasesConfig.js +27 -27
  5. package/lib/config/authInfoConfig.d.ts +19 -19
  6. package/lib/config/authInfoConfig.js +34 -34
  7. package/lib/config/config.d.ts +311 -311
  8. package/lib/config/config.js +574 -574
  9. package/lib/config/configAggregator.d.ts +232 -232
  10. package/lib/config/configAggregator.js +379 -379
  11. package/lib/config/configFile.d.ts +199 -199
  12. package/lib/config/configFile.js +340 -340
  13. package/lib/config/configGroup.d.ts +141 -141
  14. package/lib/config/configGroup.js +224 -224
  15. package/lib/config/configStore.d.ts +241 -241
  16. package/lib/config/configStore.js +352 -352
  17. package/lib/config/envVars.d.ts +101 -101
  18. package/lib/config/envVars.js +456 -456
  19. package/lib/config/orgUsersConfig.d.ts +31 -31
  20. package/lib/config/orgUsersConfig.js +41 -41
  21. package/lib/config/sandboxOrgConfig.d.ts +37 -37
  22. package/lib/config/sandboxOrgConfig.js +50 -50
  23. package/lib/config/sandboxProcessCache.d.ts +16 -16
  24. package/lib/config/sandboxProcessCache.js +37 -37
  25. package/lib/config/tokensConfig.d.ts +10 -10
  26. package/lib/config/tokensConfig.js +28 -28
  27. package/lib/config/ttlConfig.d.ts +34 -34
  28. package/lib/config/ttlConfig.js +54 -54
  29. package/lib/crypto/crypto.d.ts +54 -54
  30. package/lib/crypto/crypto.js +220 -220
  31. package/lib/crypto/keyChain.d.ts +8 -8
  32. package/lib/crypto/keyChain.js +61 -61
  33. package/lib/crypto/keyChainImpl.d.ts +116 -116
  34. package/lib/crypto/keyChainImpl.js +486 -486
  35. package/lib/crypto/secureBuffer.d.ts +46 -46
  36. package/lib/crypto/secureBuffer.js +82 -82
  37. package/lib/deviceOauthService.d.ts +71 -71
  38. package/lib/deviceOauthService.js +191 -191
  39. package/lib/exported.d.ts +38 -38
  40. package/lib/exported.js +118 -118
  41. package/lib/global.d.ts +70 -70
  42. package/lib/global.js +109 -109
  43. package/lib/lifecycleEvents.d.ts +93 -93
  44. package/lib/lifecycleEvents.js +188 -188
  45. package/lib/logger.d.ts +381 -381
  46. package/lib/logger.js +734 -734
  47. package/lib/messages.d.ts +291 -291
  48. package/lib/messages.js +543 -543
  49. package/lib/org/authInfo.d.ts +344 -344
  50. package/lib/org/authInfo.js +892 -892
  51. package/lib/org/authRemover.d.ts +88 -88
  52. package/lib/org/authRemover.js +182 -182
  53. package/lib/org/connection.d.ts +197 -197
  54. package/lib/org/connection.js +395 -395
  55. package/lib/org/index.d.ts +6 -6
  56. package/lib/org/index.js +28 -28
  57. package/lib/org/org.d.ts +558 -558
  58. package/lib/org/org.js +1267 -1267
  59. package/lib/org/orgConfigProperties.d.ts +69 -69
  60. package/lib/org/orgConfigProperties.js +136 -136
  61. package/lib/org/permissionSetAssignment.d.ts +35 -35
  62. package/lib/org/permissionSetAssignment.js +125 -125
  63. package/lib/org/scratchOrgCache.d.ts +20 -20
  64. package/lib/org/scratchOrgCache.js +32 -32
  65. package/lib/org/scratchOrgCreate.d.ts +54 -54
  66. package/lib/org/scratchOrgCreate.js +216 -216
  67. package/lib/org/scratchOrgErrorCodes.d.ts +10 -10
  68. package/lib/org/scratchOrgErrorCodes.js +88 -88
  69. package/lib/org/scratchOrgFeatureDeprecation.d.ts +26 -26
  70. package/lib/org/scratchOrgFeatureDeprecation.js +109 -109
  71. package/lib/org/scratchOrgInfoApi.d.ts +68 -68
  72. package/lib/org/scratchOrgInfoApi.js +413 -413
  73. package/lib/org/scratchOrgInfoGenerator.d.ts +64 -64
  74. package/lib/org/scratchOrgInfoGenerator.js +241 -241
  75. package/lib/org/scratchOrgLifecycleEvents.d.ts +10 -10
  76. package/lib/org/scratchOrgLifecycleEvents.js +40 -40
  77. package/lib/org/scratchOrgSettingsGenerator.d.ts +78 -78
  78. package/lib/org/scratchOrgSettingsGenerator.js +276 -276
  79. package/lib/org/scratchOrgTypes.d.ts +43 -43
  80. package/lib/org/scratchOrgTypes.js +8 -8
  81. package/lib/org/user.d.ts +187 -187
  82. package/lib/org/user.js +448 -448
  83. package/lib/schema/printer.d.ts +79 -79
  84. package/lib/schema/printer.js +260 -260
  85. package/lib/schema/validator.d.ts +70 -70
  86. package/lib/schema/validator.js +169 -169
  87. package/lib/sfError.d.ts +73 -73
  88. package/lib/sfError.js +136 -136
  89. package/lib/sfProject.d.ts +357 -357
  90. package/lib/sfProject.js +671 -671
  91. package/lib/stateAggregator/accessors/aliasAccessor.d.ts +98 -98
  92. package/lib/stateAggregator/accessors/aliasAccessor.js +145 -145
  93. package/lib/stateAggregator/accessors/orgAccessor.d.ts +101 -101
  94. package/lib/stateAggregator/accessors/orgAccessor.js +240 -240
  95. package/lib/stateAggregator/accessors/sandboxAccessor.d.ts +8 -8
  96. package/lib/stateAggregator/accessors/sandboxAccessor.js +27 -27
  97. package/lib/stateAggregator/accessors/tokenAccessor.d.ts +63 -63
  98. package/lib/stateAggregator/accessors/tokenAccessor.js +79 -79
  99. package/lib/stateAggregator/index.d.ts +4 -4
  100. package/lib/stateAggregator/index.js +26 -26
  101. package/lib/stateAggregator/stateAggregator.d.ts +25 -25
  102. package/lib/stateAggregator/stateAggregator.js +45 -45
  103. package/lib/status/myDomainResolver.d.ts +66 -66
  104. package/lib/status/myDomainResolver.js +124 -124
  105. package/lib/status/pollingClient.d.ts +85 -85
  106. package/lib/status/pollingClient.js +115 -115
  107. package/lib/status/streamingClient.d.ts +244 -244
  108. package/lib/status/streamingClient.js +436 -436
  109. package/lib/status/types.d.ts +89 -89
  110. package/lib/status/types.js +17 -17
  111. package/lib/testSetup.d.ts +553 -553
  112. package/lib/testSetup.js +871 -871
  113. package/lib/util/cache.d.ts +11 -11
  114. package/lib/util/cache.js +69 -69
  115. package/lib/util/checkLightningDomain.d.ts +1 -1
  116. package/lib/util/checkLightningDomain.js +28 -28
  117. package/lib/util/directoryWriter.d.ts +12 -12
  118. package/lib/util/directoryWriter.js +53 -53
  119. package/lib/util/getJwtAudienceUrl.d.ts +4 -4
  120. package/lib/util/getJwtAudienceUrl.js +18 -18
  121. package/lib/util/internal.d.ts +58 -58
  122. package/lib/util/internal.js +118 -118
  123. package/lib/util/jsonXmlTools.d.ts +14 -14
  124. package/lib/util/jsonXmlTools.js +38 -38
  125. package/lib/util/mapKeys.d.ts +14 -14
  126. package/lib/util/mapKeys.js +51 -51
  127. package/lib/util/sfdc.d.ts +52 -52
  128. package/lib/util/sfdc.js +85 -85
  129. package/lib/util/sfdcUrl.d.ts +72 -72
  130. package/lib/util/sfdcUrl.js +215 -215
  131. package/lib/util/structuredWriter.d.ts +9 -9
  132. package/lib/util/structuredWriter.js +2 -2
  133. package/lib/util/zipWriter.d.ts +16 -16
  134. package/lib/util/zipWriter.js +67 -67
  135. package/lib/webOAuthServer.d.ts +156 -156
  136. package/lib/webOAuthServer.js +388 -388
  137. package/messages/auth.md +37 -37
  138. package/messages/config.md +156 -156
  139. package/messages/connection.md +30 -30
  140. package/messages/core.json +20 -20
  141. package/messages/core.md +67 -67
  142. package/messages/encryption.md +85 -85
  143. package/messages/envVars.md +303 -303
  144. package/messages/org.md +63 -63
  145. package/messages/permissionSetAssignment.md +31 -31
  146. package/messages/scratchOrgCreate.md +23 -23
  147. package/messages/scratchOrgErrorCodes.md +115 -115
  148. package/messages/scratchOrgFeatureDeprecation.md +11 -11
  149. package/messages/scratchOrgInfoApi.md +15 -15
  150. package/messages/scratchOrgInfoGenerator.md +23 -23
  151. package/messages/streaming.md +23 -23
  152. package/messages/user.md +35 -35
  153. package/package.json +97 -97
@@ -1,88 +1,88 @@
1
- import { AsyncOptionalCreatable } from '@salesforce/kit';
2
- import { JsonMap } from '@salesforce/ts-types';
3
- import { AuthFields } from '.';
4
- /**
5
- * Handles the removing of authorizations, which includes deleting the auth file
6
- * in the global .sfdx folder, deleting any configs that are associated with the username/alias,
7
- * and deleting any aliases associated with the username
8
- *
9
- * ```
10
- * const remover = await AuthRemover.create();
11
- * await remover.removeAuth('example@mycompany.com');
12
- * ```
13
- *
14
- * ```
15
- * const remover = await AuthRemover.create();
16
- * await remover.removeAllAuths();
17
- * ```
18
- *
19
- * ```
20
- * const remover = await AuthRemover.create();
21
- * const auth = await remover.findAuth(
22
- * example@mycompany.com
23
- * );
24
- * await remover.removeAuth(auth.username);
25
- * ```
26
- */
27
- export declare class AuthRemover extends AsyncOptionalCreatable {
28
- private config;
29
- private stateAggregator;
30
- private logger;
31
- /**
32
- * Removes the authentication and any configs or aliases associated with it
33
- *
34
- * @param usernameOrAlias the username or alias that you want to remove
35
- */
36
- removeAuth(usernameOrAlias: string): Promise<void>;
37
- /**
38
- * Removes all authentication files and any configs or aliases associated with them
39
- */
40
- removeAllAuths(): Promise<void>;
41
- /**
42
- * Finds authorization files for username/alias in the global .sfdx folder
43
- * **Throws** *{@link SfError}{ name: 'TargetOrgNotSetError' }* if no target-org
44
- * **Throws** *{@link SfError}{ name: 'NamedOrgNotFoundError' }* if specified user is not found
45
- *
46
- * @param usernameOrAlias username or alias of the auth you want to find, defaults to the configured target-org
47
- * @returns {Promise<SfOrg>}
48
- */
49
- findAuth(usernameOrAlias?: string): Promise<AuthFields>;
50
- /**
51
- * Finds all org authorizations in the global info file (.sf/sf.json)
52
- *
53
- * @returns {Record<string, AuthFields>}
54
- */
55
- findAllAuths(): Record<string, AuthFields & JsonMap>;
56
- protected init(): Promise<void>;
57
- /**
58
- * Returns the username for a given alias if the alias exists.
59
- *
60
- * @param usernameOrAlias username or alias
61
- * @returns {Promise<string>}
62
- */
63
- private resolveUsername;
64
- /**
65
- * @returns {string}
66
- */
67
- private getTargetOrg;
68
- /**
69
- * Returns aliases for provided username
70
- *
71
- * @param username username that's been aliased
72
- * @returns {Promise<string[]>}
73
- */
74
- private getAliases;
75
- /**
76
- * Unsets any configured values (both global and local) for provided username
77
- *
78
- * @param username username that you want to remove from config files
79
- */
80
- private unsetConfigValues;
81
- /**
82
- * Unsets any aliases for provided username
83
- *
84
- * @param username username that you want to remove from aliases
85
- */
86
- private unsetAliases;
87
- private unsetTokens;
88
- }
1
+ import { AsyncOptionalCreatable } from '@salesforce/kit';
2
+ import { JsonMap } from '@salesforce/ts-types';
3
+ import { AuthFields } from '.';
4
+ /**
5
+ * Handles the removing of authorizations, which includes deleting the auth file
6
+ * in the global .sfdx folder, deleting any configs that are associated with the username/alias,
7
+ * and deleting any aliases associated with the username
8
+ *
9
+ * ```
10
+ * const remover = await AuthRemover.create();
11
+ * await remover.removeAuth('example@mycompany.com');
12
+ * ```
13
+ *
14
+ * ```
15
+ * const remover = await AuthRemover.create();
16
+ * await remover.removeAllAuths();
17
+ * ```
18
+ *
19
+ * ```
20
+ * const remover = await AuthRemover.create();
21
+ * const auth = await remover.findAuth(
22
+ * example@mycompany.com
23
+ * );
24
+ * await remover.removeAuth(auth.username);
25
+ * ```
26
+ */
27
+ export declare class AuthRemover extends AsyncOptionalCreatable {
28
+ private config;
29
+ private stateAggregator;
30
+ private logger;
31
+ /**
32
+ * Removes the authentication and any configs or aliases associated with it
33
+ *
34
+ * @param usernameOrAlias the username or alias that you want to remove
35
+ */
36
+ removeAuth(usernameOrAlias: string): Promise<void>;
37
+ /**
38
+ * Removes all authentication files and any configs or aliases associated with them
39
+ */
40
+ removeAllAuths(): Promise<void>;
41
+ /**
42
+ * Finds authorization files for username/alias in the global .sfdx folder
43
+ * **Throws** *{@link SfError}{ name: 'TargetOrgNotSetError' }* if no target-org
44
+ * **Throws** *{@link SfError}{ name: 'NamedOrgNotFoundError' }* if specified user is not found
45
+ *
46
+ * @param usernameOrAlias username or alias of the auth you want to find, defaults to the configured target-org
47
+ * @returns {Promise<SfOrg>}
48
+ */
49
+ findAuth(usernameOrAlias?: string): Promise<AuthFields>;
50
+ /**
51
+ * Finds all org authorizations in the global info file (.sf/sf.json)
52
+ *
53
+ * @returns {Record<string, AuthFields>}
54
+ */
55
+ findAllAuths(): Record<string, AuthFields & JsonMap>;
56
+ protected init(): Promise<void>;
57
+ /**
58
+ * Returns the username for a given alias if the alias exists.
59
+ *
60
+ * @param usernameOrAlias username or alias
61
+ * @returns {Promise<string>}
62
+ */
63
+ private resolveUsername;
64
+ /**
65
+ * @returns {string}
66
+ */
67
+ private getTargetOrg;
68
+ /**
69
+ * Returns aliases for provided username
70
+ *
71
+ * @param username username that's been aliased
72
+ * @returns {Promise<string[]>}
73
+ */
74
+ private getAliases;
75
+ /**
76
+ * Unsets any configured values (both global and local) for provided username
77
+ *
78
+ * @param username username that you want to remove from config files
79
+ */
80
+ private unsetConfigValues;
81
+ /**
82
+ * Unsets any aliases for provided username
83
+ *
84
+ * @param username username that you want to remove from aliases
85
+ */
86
+ private unsetAliases;
87
+ private unsetTokens;
88
+ }
@@ -1,183 +1,183 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2020, salesforce.com, inc.
4
- * All rights reserved.
5
- * Licensed under the BSD 3-Clause license.
6
- * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.AuthRemover = void 0;
10
- const kit_1 = require("@salesforce/kit");
11
- const configAggregator_1 = require("../config/configAggregator");
12
- const logger_1 = require("../logger");
13
- const messages_1 = require("../messages");
14
- const stateAggregator_1 = require("../stateAggregator");
15
- const orgConfigProperties_1 = require("./orgConfigProperties");
16
- messages_1.Messages.importMessagesDirectory(__dirname);
17
- const messages = messages_1.Messages.load('@salesforce/core', 'auth', ['targetOrgNotSet']);
18
- /**
19
- * Handles the removing of authorizations, which includes deleting the auth file
20
- * in the global .sfdx folder, deleting any configs that are associated with the username/alias,
21
- * and deleting any aliases associated with the username
22
- *
23
- * ```
24
- * const remover = await AuthRemover.create();
25
- * await remover.removeAuth('example@mycompany.com');
26
- * ```
27
- *
28
- * ```
29
- * const remover = await AuthRemover.create();
30
- * await remover.removeAllAuths();
31
- * ```
32
- *
33
- * ```
34
- * const remover = await AuthRemover.create();
35
- * const auth = await remover.findAuth(
36
- * example@mycompany.com
37
- * );
38
- * await remover.removeAuth(auth.username);
39
- * ```
40
- */
41
- class AuthRemover extends kit_1.AsyncOptionalCreatable {
42
- /**
43
- * Removes the authentication and any configs or aliases associated with it
44
- *
45
- * @param usernameOrAlias the username or alias that you want to remove
46
- */
47
- async removeAuth(usernameOrAlias) {
48
- const username = await this.resolveUsername(usernameOrAlias);
49
- this.logger.debug(`Removing authorization for user ${username}`);
50
- await this.unsetConfigValues(username);
51
- await this.unsetAliases(username);
52
- await this.unsetTokens(username);
53
- await this.stateAggregator.orgs.remove(username);
54
- }
55
- /**
56
- * Removes all authentication files and any configs or aliases associated with them
57
- */
58
- async removeAllAuths() {
59
- const auths = this.findAllAuths();
60
- const usernames = Object.keys(auths);
61
- for (const username of usernames) {
62
- // prevent ConfigFile collision bug
63
- // eslint-disable-next-line no-await-in-loop
64
- await this.removeAuth(username);
65
- }
66
- }
67
- /**
68
- * Finds authorization files for username/alias in the global .sfdx folder
69
- * **Throws** *{@link SfError}{ name: 'TargetOrgNotSetError' }* if no target-org
70
- * **Throws** *{@link SfError}{ name: 'NamedOrgNotFoundError' }* if specified user is not found
71
- *
72
- * @param usernameOrAlias username or alias of the auth you want to find, defaults to the configured target-org
73
- * @returns {Promise<SfOrg>}
74
- */
75
- async findAuth(usernameOrAlias) {
76
- const username = await this.resolveUsername(usernameOrAlias ?? this.getTargetOrg());
77
- return this.stateAggregator.orgs.get(username, false, true);
78
- }
79
- /**
80
- * Finds all org authorizations in the global info file (.sf/sf.json)
81
- *
82
- * @returns {Record<string, AuthFields>}
83
- */
84
- findAllAuths() {
85
- const orgs = this.stateAggregator.orgs.getAll();
86
- return orgs.reduce((x, y) =>
87
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
88
- ({ ...x, [y.username]: y }), {});
89
- }
90
- async init() {
91
- this.logger = await logger_1.Logger.child(this.constructor.name);
92
- this.config = await configAggregator_1.ConfigAggregator.create();
93
- this.stateAggregator = await stateAggregator_1.StateAggregator.getInstance();
94
- await this.stateAggregator.orgs.readAll();
95
- }
96
- /**
97
- * Returns the username for a given alias if the alias exists.
98
- *
99
- * @param usernameOrAlias username or alias
100
- * @returns {Promise<string>}
101
- */
102
- // eslint-disable-next-line @typescript-eslint/require-await
103
- async resolveUsername(usernameOrAlias) {
104
- return this.stateAggregator.aliases.resolveUsername(usernameOrAlias);
105
- }
106
- /**
107
- * @returns {string}
108
- */
109
- getTargetOrg() {
110
- const targetOrg = this.config.getInfo(orgConfigProperties_1.OrgConfigProperties.TARGET_ORG).value;
111
- if (!targetOrg) {
112
- throw messages.createError('targetOrgNotSet');
113
- }
114
- return targetOrg;
115
- }
116
- /**
117
- * Returns aliases for provided username
118
- *
119
- * @param username username that's been aliased
120
- * @returns {Promise<string[]>}
121
- */
122
- getAliases(username) {
123
- return this.stateAggregator.aliases.getAll(username);
124
- }
125
- /**
126
- * Unsets any configured values (both global and local) for provided username
127
- *
128
- * @param username username that you want to remove from config files
129
- */
130
- async unsetConfigValues(username) {
131
- const aliases = this.getAliases(username);
132
- this.logger.debug(`Clearing config keys for username ${username} and aliases: ${aliases.join(',')}`);
133
- const configs = [this.config.getGlobalConfig(), this.config.getLocalConfig()];
134
- for (const config of configs) {
135
- if (config) {
136
- const keysWithUsername = config.getKeysByValue(username) || [];
137
- const keysWithAlias = aliases
138
- .map((alias) => config.getKeysByValue(alias))
139
- .filter((k) => !!k)
140
- .reduce((x, y) => x.concat(y), []);
141
- const allKeys = keysWithUsername.concat(keysWithAlias);
142
- this.logger.debug(`Found these config keys to remove: ${allKeys.join(',')}`);
143
- allKeys.forEach((key) => {
144
- try {
145
- config.unset(key);
146
- }
147
- catch {
148
- this.logger.debug(`Failed to remove ${key}`);
149
- }
150
- });
151
- // prevent ConfigFile collision bug
152
- // eslint-disable-next-line no-await-in-loop
153
- await config.write();
154
- }
155
- }
156
- }
157
- /**
158
- * Unsets any aliases for provided username
159
- *
160
- * @param username username that you want to remove from aliases
161
- */
162
- async unsetAliases(username) {
163
- this.logger.debug(`Clearing aliases for username: ${username}`);
164
- const existingAliases = this.stateAggregator.aliases.getAll(username);
165
- if (existingAliases.length === 0)
166
- return;
167
- this.logger.debug(`Found these aliases to remove: ${existingAliases.join(',')}`);
168
- existingAliases.forEach((alias) => this.stateAggregator.aliases.unset(alias));
169
- await this.stateAggregator.aliases.write();
170
- }
171
- async unsetTokens(username) {
172
- this.logger.debug(`Clearing tokens for username: ${username}`);
173
- const tokens = this.stateAggregator.tokens.getAll();
174
- for (const [key, token] of Object.entries(tokens)) {
175
- if (token.user === username) {
176
- this.stateAggregator.tokens.unset(key);
177
- }
178
- }
179
- await this.stateAggregator.tokens.write();
180
- }
181
- }
182
- exports.AuthRemover = AuthRemover;
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2020, salesforce.com, inc.
4
+ * All rights reserved.
5
+ * Licensed under the BSD 3-Clause license.
6
+ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AuthRemover = void 0;
10
+ const kit_1 = require("@salesforce/kit");
11
+ const configAggregator_1 = require("../config/configAggregator");
12
+ const logger_1 = require("../logger");
13
+ const messages_1 = require("../messages");
14
+ const stateAggregator_1 = require("../stateAggregator");
15
+ const orgConfigProperties_1 = require("./orgConfigProperties");
16
+ messages_1.Messages.importMessagesDirectory(__dirname);
17
+ const messages = messages_1.Messages.load('@salesforce/core', 'auth', ['targetOrgNotSet']);
18
+ /**
19
+ * Handles the removing of authorizations, which includes deleting the auth file
20
+ * in the global .sfdx folder, deleting any configs that are associated with the username/alias,
21
+ * and deleting any aliases associated with the username
22
+ *
23
+ * ```
24
+ * const remover = await AuthRemover.create();
25
+ * await remover.removeAuth('example@mycompany.com');
26
+ * ```
27
+ *
28
+ * ```
29
+ * const remover = await AuthRemover.create();
30
+ * await remover.removeAllAuths();
31
+ * ```
32
+ *
33
+ * ```
34
+ * const remover = await AuthRemover.create();
35
+ * const auth = await remover.findAuth(
36
+ * example@mycompany.com
37
+ * );
38
+ * await remover.removeAuth(auth.username);
39
+ * ```
40
+ */
41
+ class AuthRemover extends kit_1.AsyncOptionalCreatable {
42
+ /**
43
+ * Removes the authentication and any configs or aliases associated with it
44
+ *
45
+ * @param usernameOrAlias the username or alias that you want to remove
46
+ */
47
+ async removeAuth(usernameOrAlias) {
48
+ const username = await this.resolveUsername(usernameOrAlias);
49
+ this.logger.debug(`Removing authorization for user ${username}`);
50
+ await this.unsetConfigValues(username);
51
+ await this.unsetAliases(username);
52
+ await this.unsetTokens(username);
53
+ await this.stateAggregator.orgs.remove(username);
54
+ }
55
+ /**
56
+ * Removes all authentication files and any configs or aliases associated with them
57
+ */
58
+ async removeAllAuths() {
59
+ const auths = this.findAllAuths();
60
+ const usernames = Object.keys(auths);
61
+ for (const username of usernames) {
62
+ // prevent ConfigFile collision bug
63
+ // eslint-disable-next-line no-await-in-loop
64
+ await this.removeAuth(username);
65
+ }
66
+ }
67
+ /**
68
+ * Finds authorization files for username/alias in the global .sfdx folder
69
+ * **Throws** *{@link SfError}{ name: 'TargetOrgNotSetError' }* if no target-org
70
+ * **Throws** *{@link SfError}{ name: 'NamedOrgNotFoundError' }* if specified user is not found
71
+ *
72
+ * @param usernameOrAlias username or alias of the auth you want to find, defaults to the configured target-org
73
+ * @returns {Promise<SfOrg>}
74
+ */
75
+ async findAuth(usernameOrAlias) {
76
+ const username = await this.resolveUsername(usernameOrAlias ?? this.getTargetOrg());
77
+ return this.stateAggregator.orgs.get(username, false, true);
78
+ }
79
+ /**
80
+ * Finds all org authorizations in the global info file (.sf/sf.json)
81
+ *
82
+ * @returns {Record<string, AuthFields>}
83
+ */
84
+ findAllAuths() {
85
+ const orgs = this.stateAggregator.orgs.getAll();
86
+ return orgs.reduce((x, y) =>
87
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
88
+ ({ ...x, [y.username]: y }), {});
89
+ }
90
+ async init() {
91
+ this.logger = await logger_1.Logger.child(this.constructor.name);
92
+ this.config = await configAggregator_1.ConfigAggregator.create();
93
+ this.stateAggregator = await stateAggregator_1.StateAggregator.getInstance();
94
+ await this.stateAggregator.orgs.readAll();
95
+ }
96
+ /**
97
+ * Returns the username for a given alias if the alias exists.
98
+ *
99
+ * @param usernameOrAlias username or alias
100
+ * @returns {Promise<string>}
101
+ */
102
+ // eslint-disable-next-line @typescript-eslint/require-await
103
+ async resolveUsername(usernameOrAlias) {
104
+ return this.stateAggregator.aliases.resolveUsername(usernameOrAlias);
105
+ }
106
+ /**
107
+ * @returns {string}
108
+ */
109
+ getTargetOrg() {
110
+ const targetOrg = this.config.getInfo(orgConfigProperties_1.OrgConfigProperties.TARGET_ORG).value;
111
+ if (!targetOrg) {
112
+ throw messages.createError('targetOrgNotSet');
113
+ }
114
+ return targetOrg;
115
+ }
116
+ /**
117
+ * Returns aliases for provided username
118
+ *
119
+ * @param username username that's been aliased
120
+ * @returns {Promise<string[]>}
121
+ */
122
+ getAliases(username) {
123
+ return this.stateAggregator.aliases.getAll(username);
124
+ }
125
+ /**
126
+ * Unsets any configured values (both global and local) for provided username
127
+ *
128
+ * @param username username that you want to remove from config files
129
+ */
130
+ async unsetConfigValues(username) {
131
+ const aliases = this.getAliases(username);
132
+ this.logger.debug(`Clearing config keys for username ${username} and aliases: ${aliases.join(',')}`);
133
+ const configs = [this.config.getGlobalConfig(), this.config.getLocalConfig()];
134
+ for (const config of configs) {
135
+ if (config) {
136
+ const keysWithUsername = config.getKeysByValue(username) || [];
137
+ const keysWithAlias = aliases
138
+ .map((alias) => config.getKeysByValue(alias))
139
+ .filter((k) => !!k)
140
+ .reduce((x, y) => x.concat(y), []);
141
+ const allKeys = keysWithUsername.concat(keysWithAlias);
142
+ this.logger.debug(`Found these config keys to remove: ${allKeys.join(',')}`);
143
+ allKeys.forEach((key) => {
144
+ try {
145
+ config.unset(key);
146
+ }
147
+ catch {
148
+ this.logger.debug(`Failed to remove ${key}`);
149
+ }
150
+ });
151
+ // prevent ConfigFile collision bug
152
+ // eslint-disable-next-line no-await-in-loop
153
+ await config.write();
154
+ }
155
+ }
156
+ }
157
+ /**
158
+ * Unsets any aliases for provided username
159
+ *
160
+ * @param username username that you want to remove from aliases
161
+ */
162
+ async unsetAliases(username) {
163
+ this.logger.debug(`Clearing aliases for username: ${username}`);
164
+ const existingAliases = this.stateAggregator.aliases.getAll(username);
165
+ if (existingAliases.length === 0)
166
+ return;
167
+ this.logger.debug(`Found these aliases to remove: ${existingAliases.join(',')}`);
168
+ existingAliases.forEach((alias) => this.stateAggregator.aliases.unset(alias));
169
+ await this.stateAggregator.aliases.write();
170
+ }
171
+ async unsetTokens(username) {
172
+ this.logger.debug(`Clearing tokens for username: ${username}`);
173
+ const tokens = this.stateAggregator.tokens.getAll();
174
+ for (const [key, token] of Object.entries(tokens)) {
175
+ if (token.user === username) {
176
+ this.stateAggregator.tokens.unset(key);
177
+ }
178
+ }
179
+ await this.stateAggregator.tokens.write();
180
+ }
181
+ }
182
+ exports.AuthRemover = AuthRemover;
183
183
  //# sourceMappingURL=authRemover.js.map