'use strict'; // Category ranking from most restrictive (lowest rank) to least restrictive (highest rank) // Lower rank = more restrictive = fewer features supported var categoryRank = /** @type {const} */ { __proto__: null, 'pre-exports': /** @type {const} */ (0), broken: /** @type {const} */ (1), experimental: /** @type {const} */ (2), conditions: /** @type {const} */ (3), 'broken-dir-slash-conditions': /** @type {const} */ (4), patterns: /** @type {const} */ (5), 'pattern-trailers': /** @type {const} */ (6), 'pattern-trailers+json-imports': /** @type {const} */ (7), 'pattern-trailers-no-dir-slash': /** @type {const} */ (8), 'pattern-trailers-no-dir-slash+json-imports': /** @type {const} */ (9), 'require-esm': /** @type {const} */ (10), 'strips-types': /** @type {const} */ (11), 'subpath-imports-slash': /** @type {const} */ (12) }; // Select the most restrictive category from an array of categories /** @type {(categories?: ReturnType[]) => import('node-exports-info/getCategory').Category | null} */ module.exports = function selectMostRestrictive(categories) { if (!categories || categories.length === 0) { return null; } var mostRestrictive = null; var lowestRank = Infinity; for (var i = 0; i < categories.length; i++) { var cat = categories[i]; var rank = categoryRank[cat]; if (typeof rank === 'number' && rank < lowestRank) { lowestRank = rank; mostRestrictive = cat; } } return mostRestrictive; };