@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.
- package/LICENSE.txt +11 -11
- package/README.md +222 -222
- package/lib/config/aliasesConfig.d.ts +12 -12
- package/lib/config/aliasesConfig.js +27 -27
- package/lib/config/authInfoConfig.d.ts +19 -19
- package/lib/config/authInfoConfig.js +34 -34
- package/lib/config/config.d.ts +311 -311
- package/lib/config/config.js +574 -574
- package/lib/config/configAggregator.d.ts +232 -232
- package/lib/config/configAggregator.js +379 -379
- package/lib/config/configFile.d.ts +199 -199
- package/lib/config/configFile.js +340 -340
- package/lib/config/configGroup.d.ts +141 -141
- package/lib/config/configGroup.js +224 -224
- package/lib/config/configStore.d.ts +241 -241
- package/lib/config/configStore.js +352 -352
- package/lib/config/envVars.d.ts +101 -101
- package/lib/config/envVars.js +456 -456
- package/lib/config/orgUsersConfig.d.ts +31 -31
- package/lib/config/orgUsersConfig.js +41 -41
- package/lib/config/sandboxOrgConfig.d.ts +37 -37
- package/lib/config/sandboxOrgConfig.js +50 -50
- package/lib/config/sandboxProcessCache.d.ts +16 -16
- package/lib/config/sandboxProcessCache.js +37 -37
- package/lib/config/tokensConfig.d.ts +10 -10
- package/lib/config/tokensConfig.js +28 -28
- package/lib/config/ttlConfig.d.ts +34 -34
- package/lib/config/ttlConfig.js +54 -54
- package/lib/crypto/crypto.d.ts +54 -54
- package/lib/crypto/crypto.js +220 -220
- package/lib/crypto/keyChain.d.ts +8 -8
- package/lib/crypto/keyChain.js +61 -61
- package/lib/crypto/keyChainImpl.d.ts +116 -116
- package/lib/crypto/keyChainImpl.js +486 -486
- package/lib/crypto/secureBuffer.d.ts +46 -46
- package/lib/crypto/secureBuffer.js +82 -82
- package/lib/deviceOauthService.d.ts +71 -71
- package/lib/deviceOauthService.js +191 -191
- package/lib/exported.d.ts +38 -38
- package/lib/exported.js +118 -118
- package/lib/global.d.ts +70 -70
- package/lib/global.js +109 -109
- package/lib/lifecycleEvents.d.ts +93 -93
- package/lib/lifecycleEvents.js +188 -188
- package/lib/logger.d.ts +381 -381
- package/lib/logger.js +734 -734
- package/lib/messages.d.ts +291 -291
- package/lib/messages.js +543 -543
- package/lib/org/authInfo.d.ts +344 -344
- package/lib/org/authInfo.js +892 -892
- package/lib/org/authRemover.d.ts +88 -88
- package/lib/org/authRemover.js +182 -182
- package/lib/org/connection.d.ts +197 -197
- package/lib/org/connection.js +395 -395
- package/lib/org/index.d.ts +6 -6
- package/lib/org/index.js +28 -28
- package/lib/org/org.d.ts +558 -558
- package/lib/org/org.js +1267 -1267
- package/lib/org/orgConfigProperties.d.ts +69 -69
- package/lib/org/orgConfigProperties.js +136 -136
- package/lib/org/permissionSetAssignment.d.ts +35 -35
- package/lib/org/permissionSetAssignment.js +125 -125
- package/lib/org/scratchOrgCache.d.ts +20 -20
- package/lib/org/scratchOrgCache.js +32 -32
- package/lib/org/scratchOrgCreate.d.ts +54 -54
- package/lib/org/scratchOrgCreate.js +216 -216
- package/lib/org/scratchOrgErrorCodes.d.ts +10 -10
- package/lib/org/scratchOrgErrorCodes.js +88 -88
- package/lib/org/scratchOrgFeatureDeprecation.d.ts +26 -26
- package/lib/org/scratchOrgFeatureDeprecation.js +109 -109
- package/lib/org/scratchOrgInfoApi.d.ts +68 -68
- package/lib/org/scratchOrgInfoApi.js +413 -413
- package/lib/org/scratchOrgInfoGenerator.d.ts +64 -64
- package/lib/org/scratchOrgInfoGenerator.js +241 -241
- package/lib/org/scratchOrgLifecycleEvents.d.ts +10 -10
- package/lib/org/scratchOrgLifecycleEvents.js +40 -40
- package/lib/org/scratchOrgSettingsGenerator.d.ts +78 -78
- package/lib/org/scratchOrgSettingsGenerator.js +276 -276
- package/lib/org/scratchOrgTypes.d.ts +43 -43
- package/lib/org/scratchOrgTypes.js +8 -8
- package/lib/org/user.d.ts +187 -187
- package/lib/org/user.js +448 -448
- package/lib/schema/printer.d.ts +79 -79
- package/lib/schema/printer.js +260 -260
- package/lib/schema/validator.d.ts +70 -70
- package/lib/schema/validator.js +169 -169
- package/lib/sfError.d.ts +73 -73
- package/lib/sfError.js +136 -136
- package/lib/sfProject.d.ts +357 -357
- package/lib/sfProject.js +671 -671
- package/lib/stateAggregator/accessors/aliasAccessor.d.ts +98 -98
- package/lib/stateAggregator/accessors/aliasAccessor.js +145 -145
- package/lib/stateAggregator/accessors/orgAccessor.d.ts +101 -101
- package/lib/stateAggregator/accessors/orgAccessor.js +240 -240
- package/lib/stateAggregator/accessors/sandboxAccessor.d.ts +8 -8
- package/lib/stateAggregator/accessors/sandboxAccessor.js +27 -27
- package/lib/stateAggregator/accessors/tokenAccessor.d.ts +63 -63
- package/lib/stateAggregator/accessors/tokenAccessor.js +79 -79
- package/lib/stateAggregator/index.d.ts +4 -4
- package/lib/stateAggregator/index.js +26 -26
- package/lib/stateAggregator/stateAggregator.d.ts +25 -25
- package/lib/stateAggregator/stateAggregator.js +45 -45
- package/lib/status/myDomainResolver.d.ts +66 -66
- package/lib/status/myDomainResolver.js +124 -124
- package/lib/status/pollingClient.d.ts +85 -85
- package/lib/status/pollingClient.js +115 -115
- package/lib/status/streamingClient.d.ts +244 -244
- package/lib/status/streamingClient.js +436 -436
- package/lib/status/types.d.ts +89 -89
- package/lib/status/types.js +17 -17
- package/lib/testSetup.d.ts +553 -553
- package/lib/testSetup.js +871 -871
- package/lib/util/cache.d.ts +11 -11
- package/lib/util/cache.js +69 -69
- package/lib/util/checkLightningDomain.d.ts +1 -1
- package/lib/util/checkLightningDomain.js +28 -28
- package/lib/util/directoryWriter.d.ts +12 -12
- package/lib/util/directoryWriter.js +53 -53
- package/lib/util/getJwtAudienceUrl.d.ts +4 -4
- package/lib/util/getJwtAudienceUrl.js +18 -18
- package/lib/util/internal.d.ts +58 -58
- package/lib/util/internal.js +118 -118
- package/lib/util/jsonXmlTools.d.ts +14 -14
- package/lib/util/jsonXmlTools.js +38 -38
- package/lib/util/mapKeys.d.ts +14 -14
- package/lib/util/mapKeys.js +51 -51
- package/lib/util/sfdc.d.ts +52 -52
- package/lib/util/sfdc.js +85 -85
- package/lib/util/sfdcUrl.d.ts +72 -72
- package/lib/util/sfdcUrl.js +215 -215
- package/lib/util/structuredWriter.d.ts +9 -9
- package/lib/util/structuredWriter.js +2 -2
- package/lib/util/zipWriter.d.ts +16 -16
- package/lib/util/zipWriter.js +67 -67
- package/lib/webOAuthServer.d.ts +156 -156
- package/lib/webOAuthServer.js +388 -388
- package/messages/auth.md +37 -37
- package/messages/config.md +156 -156
- package/messages/connection.md +30 -30
- package/messages/core.json +20 -20
- package/messages/core.md +67 -67
- package/messages/encryption.md +85 -85
- package/messages/envVars.md +303 -303
- package/messages/org.md +63 -63
- package/messages/permissionSetAssignment.md +31 -31
- package/messages/scratchOrgCreate.md +23 -23
- package/messages/scratchOrgErrorCodes.md +115 -115
- package/messages/scratchOrgFeatureDeprecation.md +11 -11
- package/messages/scratchOrgInfoApi.md +15 -15
- package/messages/scratchOrgInfoGenerator.md +23 -23
- package/messages/streaming.md +23 -23
- package/messages/user.md +35 -35
- package/package.json +97 -97
package/lib/org/authRemover.d.ts
CHANGED
|
@@ -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
|
+
}
|
package/lib/org/authRemover.js
CHANGED
|
@@ -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
|