| /** |
| * @author Toru Nagashima |
| * @copyright 2016 Toru Nagashima. All rights reserved. |
| * See LICENSE file in root directory for full license. |
| */ |
| "use strict" |
| |
| //------------------------------------------------------------------------------ |
| // Helpers |
| //------------------------------------------------------------------------------ |
| |
| const DEFAULT_VALUE = Object.freeze([".js", ".json", ".node"]) |
| |
| /** |
| * Gets `tryExtensions` property from a given option object. |
| * |
| * @param {object|undefined} option - An option object to get. |
| * @returns {string[]|null} The `tryExtensions` value, or `null`. |
| */ |
| function get(option) { |
| if (option && option.tryExtensions && Array.isArray(option.tryExtensions)) { |
| return option.tryExtensions.map(String) |
| } |
| return null |
| } |
| |
| //------------------------------------------------------------------------------ |
| // Public Interface |
| //------------------------------------------------------------------------------ |
| |
| /** |
| * Gets "tryExtensions" setting. |
| * |
| * 1. This checks `options` property, then returns it if exists. |
| * 2. This checks `settings.node` property, then returns it if exists. |
| * 3. This returns `[".js", ".json", ".node"]`. |
| * |
| * @param {RuleContext} context - The rule context. |
| * @returns {string[]} A list of extensions. |
| */ |
| module.exports = function getTryExtensions(context) { |
| return ( |
| get(context.options && context.options[0]) || |
| get(context.settings && context.settings.node) || |
| DEFAULT_VALUE |
| ) |
| } |
| |
| module.exports.schema = { |
| type: "array", |
| items: { |
| type: "string", |
| pattern: "^\\.", |
| }, |
| uniqueItems: true, |
| } |