UNPKG

eslint-plugin-sf-plugin

Version:
58 lines (57 loc) 2.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.noTimeFlags = 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 eslint_utils_1 = require("@typescript-eslint/utils/eslint-utils"); const utils_1 = require("@typescript-eslint/utils"); const commands_1 = require("../../shared/commands"); const flags_1 = require("../../shared/flags"); const timeFlags = ['seconds', 'minutes', 'milliseconds']; exports.noTimeFlags = eslint_utils_1.RuleCreator.withoutDocs({ meta: { docs: { description: 'Migrate time flags to Flags.duration', recommended: 'recommended', }, messages: { message: 'flags for {{time}} should use the Flags.duration (and specify the unit)', }, type: 'problem', fixable: 'code', schema: [], }, defaultOptions: [], create(context) { return (0, commands_1.isInCommandDirectory)(context) ? { Property(node) { if ((0, flags_1.isFlag)(node) && (0, commands_1.ancestorsContainsSfCommand)(context)) { if ((node.key.type === utils_1.AST_NODE_TYPES.Identifier || node.key.type === utils_1.AST_NODE_TYPES.Literal) && node.value.type === utils_1.AST_NODE_TYPES.CallExpression && node.value.callee.type === utils_1.AST_NODE_TYPES.MemberExpression && node.value.callee.property.type === utils_1.AST_NODE_TYPES.Identifier && timeFlags.includes(node.value.callee.property.name)) { const original = context.sourceCode.getText(node); const unit = node.value.callee.property.name; const fixed = original .replace(`Flags.${unit}({`, `Flags.duration({ unit: '${unit}',`) .replace('default:', 'defaultValue:') .replace(new RegExp(`Duration.${unit}\\((.*)\\)`, 'g'), '$1'); context.report({ node, messageId: 'message', data: { time: node.value.callee.property.name }, fix: (fixer) => fixer.replaceText(node, fixed), }); } } }, } : {}; }, });