@salesforce/plugin-auth
Version:
plugin for sf auth commands
47 lines • 2.16 kB
JavaScript
/*
* Copyright (c) 2020, salesforce.com, inc.
* All rights reserved.
* Licensed under the BSD 3-Clause license.
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
*/
import { Logger, SfdcUrl, SfProject, Messages, SfError, Global, Mode } from '@salesforce/core';
import { getString, isObject } from '@salesforce/ts-types';
import { prompts, StandardColors } from '@salesforce/sf-plugins-core';
Messages.importMessagesDirectoryFromMetaUrl(import.meta.url);
const messages = Messages.loadMessages('@salesforce/plugin-auth', 'messages');
const resolveLoginUrl = async (instanceUrl) => {
const logger = await Logger.child('Common', { tag: 'resolveLoginUrl' });
const loginUrl = instanceUrl ?? (await getLoginUrl(logger));
throwIfLightning(loginUrl);
logger.debug(`loginUrl: ${loginUrl}`);
return loginUrl;
};
/** try to get url from project if there is one, otherwise use the default production URL */
const getLoginUrl = async (logger) => {
try {
const project = await SfProject.resolve();
const projectJson = await project.resolveProjectConfig();
return getString(projectJson, 'sfdcLoginUrl', SfdcUrl.PRODUCTION);
}
catch (err) {
const message = (isObject(err) ? Reflect.get(err, 'message') ?? err : err);
logger.debug(`error occurred while trying to determine loginUrl: ${message}`);
return SfdcUrl.PRODUCTION;
}
};
const throwIfLightning = (urlString) => {
const url = new SfdcUrl(urlString);
if (url.isLightningDomain() || (url.isInternalUrl() && url.origin.includes('.lightning.'))) {
throw new SfError(messages.getMessage('lightningInstanceUrl'), 'LightningDomain', [
messages.getMessage('flags.instance-url.description'),
]);
}
};
const shouldExitCommand = async (noPrompt) => Boolean(noPrompt) || Global.getEnvironmentMode() !== Mode.DEMO
? false
: !(await prompts.confirm({ message: StandardColors.info(messages.getMessage('warnAuth', ['sf'])), ms: 60_000 }));
export default {
shouldExitCommand,
resolveLoginUrl,
};
//# sourceMappingURL=common.js.map