const fs = require('fs'); const { join } = require('path'); const VIEWPORT_SIZES_PATH = join(__dirname, 'viewport-sizes.json'); const VIEWPORT_DATA = JSON.parse(fs.readFileSync(VIEWPORT_SIZES_PATH)); /** Gets the name and the viewport size of mobile devices * @function * @name getDevicesViewportData * @returns {ViewportData} A JSON Object that contains device names and viewport sizes. */ function getDevicesViewportData () { return VIEWPORT_DATA; } /** @typedef {Object} DeviceViewportSize * @description Defines the size of a device viewport. * @property {number} portraitWidth - The viewport width in portrait orientation. * @property {number} landscapeWidth - The viewport width in landscape orientation. */ /** Gets the viewport size for the specified device. * @function * @name getViewportSize * @param {string} deviceName - Specifies the name of the target device. Use values from the Device Name column of [this table]{@link http://viewportsizes.com/}. * @returns {DeviceViewportSize} The size of the device viewport. */ function getViewportSize (deviceName) { deviceName = deviceName.toLowerCase().replace(/\s+/g, ''); return getDevicesViewportData()[deviceName]; } /** * Checks if the provided string is a valid device name contained in the screen size database. * @function * @name isValidDeviceName * @param {string} inputString - The string to be validated. * @returns {boolean} `true` if the specified string is a valid device name. */ function isValidDeviceName (inputString) { return !!getViewportSize(inputString); } module.exports = { getDevicesViewportData, getViewportSize, isValidDeviceName };