@flxbl-io/sfp
Version:
sfp is a CLI tool to help you manage your Salesforce projects in an artifact centric model
58 lines • 3.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.salesforceIdFlag = void 0;
/*
* 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
*/
const core_1 = require("@oclif/core");
const core_2 = require("@salesforce/core");
core_2.Messages.importMessagesDirectory(__dirname);
const messages = core_2.Messages.loadMessages('@salesforce/sf-plugins-core', 'messages');
/**
* Id flag with built-in validation. Short character is `i`
*
* @example
*
* ```
* import { Flags } from '@salesforce/sf-plugins-core';
* public static flags = {
* // set length or prefix
* 'flag-name': salesforceId({ length: 15, startsWith: '00D' }),
* // add flag properties
* 'flag2': salesforceId({
* required: true,
* description: 'flag2 description',
* }),
* // override the character i
* 'flag3': salesforceId({
* char: 'j',
* }),
* }
* ```
*/
exports.salesforceIdFlag = core_1.Flags.custom({
// eslint-disable-next-line @typescript-eslint/require-await
parse: async (input, _ctx, opts) => validate(input, opts),
char: 'i',
});
const validate = (input, config) => {
const { length, startsWith } = config ?? {};
// If the flag doesn't specify a length or specifies "both", then let it accept both 15 or 18.
const allowedIdLength = !length || length === 'both' ? [15, 18] : [length];
if (!allowedIdLength.includes(input.length)) {
throw messages.createError('errors.InvalidIdLength', [
allowedIdLength.join(` ${messages.getMessage('errors.InvalidIdLength.or')} `),
]);
}
if (!(0, core_2.validateSalesforceId)(input)) {
throw messages.createError('errors.InvalidId');
}
if (startsWith && !input.startsWith(startsWith)) {
throw messages.createError('errors.InvalidPrefix', [startsWith]);
}
return input;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXNmb3JjZUlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZsYWdzL3NhbGVzZm9yY2VJZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7R0FLRztBQUNILHNDQUFvQztBQUNwQywyQ0FBa0U7QUFFbEUsZUFBUSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzVDLE1BQU0sUUFBUSxHQUFHLGVBQVEsQ0FBQyxZQUFZLENBQUMsNkJBQTZCLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFhbEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNVLFFBQUEsZ0JBQWdCLEdBQUcsWUFBSyxDQUFDLE1BQU0sQ0FBdUI7SUFDakUsNERBQTREO0lBQzVELEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO0lBQ3pELElBQUksRUFBRSxHQUFHO0NBQ1YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxRQUFRLEdBQUcsQ0FBQyxLQUFhLEVBQUUsTUFBcUIsRUFBVSxFQUFFO0lBQ2hFLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztJQUU1Qyw4RkFBOEY7SUFDOUYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUFNLElBQUksTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFM0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDNUMsTUFBTSxRQUFRLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFO1lBQ25ELGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQztTQUM5RSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQUEsMkJBQW9CLEVBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFFBQVEsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQ0QsSUFBSSxVQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDaEQsTUFBTSxRQUFRLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMifQ==