"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateAndroidConfig = exports.validateIosConfig = exports.validateEnumValue = void 0; const constants_1 = require("../constants"); const FromJsonValidator_1 = __importDefault(require("./FromJsonValidator")); const utils_1 = require("./utils"); var utils_2 = require("./utils"); Object.defineProperty(exports, "validateEnumValue", { enumerable: true, get: function () { return utils_2.validateEnumValue; } }); /** * Validates given iOS configuration and converts it to it's semantically ready equivalent. * Ensures following generic config semantic requirements are met: * - `config.backgroundColor` is a valid css-formatted color, * - `config.imagePath` is pointing to a valid .png file, * - `config.imageResizeMode` * - is provided only if `config.imagePath` is provided as well * - and it's a recognizable value (one of `SplashScreenResizeMode`) * - and its value isn't `SplashScreenImageResizeMode.NATIVE` * * - `config.statusBar.hidden` might exists * - `config.statusBar.style` is a recognizable value (one of `SplashScreenStatusBarStyle`), * * - `config.darkMode.backgroundColor` is a valid css-formatted color, * - `config.darkMode.imagePath` * - is provided only if `config.darkMode.backgroundColor` is provided as well * - and it's pointing to a valid .png file, */ async function validateIosConfig(config) { const validator = new FromJsonValidator_1.default() .addRule(['backgroundColor'], utils_1.validateColor) .addRule(['image'], utils_1.validateFileIsPng) .addRule(['imageResizeMode'], (value, config) => { utils_1.ensurePropertyExists(config, ['image']); const result = utils_1.generateValidateEnumValue(constants_1.SplashScreenImageResizeMode)(value); if (result === constants_1.SplashScreenImageResizeMode.NATIVE) { const { NATIVE, ...availableValues } = constants_1.SplashScreenImageResizeMode; throw new Error(`Invalid value '${value}'. This value is not supported on iOS platform. Available values on iOS platform are ${Object.values(availableValues) .map(v => `"${v}"`) .join(' | ')}.`); } return result; }) .addRule(['statusBar', 'hidden']) .addRule(['statusBar', 'style'], utils_1.generateValidateEnumValue(constants_1.SplashScreenStatusBarStyle)) .addRule(['darkMode', 'backgroundColor'], utils_1.validateColor) .addRule(['darkMode', 'image'], (value, config) => { utils_1.ensurePropertyExists(config, ['darkMode', 'backgroundColor']); return utils_1.validateFileIsPng(value); }); const validatedConfig = await validator.validate(config); return validatedConfig; } exports.validateIosConfig = validateIosConfig; /** * Validates given Android configuration and converts it to it's semantically ready equivalent. * * Ensures following generic config semantic requirements are met: * - `config.backgroundColor` is a valid css-formatted color, * - `config.imagePath` is pointing to a valid .png file, * - `config.imageResizeMode` * - is provided only if `config.imagePath` is provided as well * - and it's a recognizable value (one of `SplashScreenResizeMode`) * * - `config.statusBar.hidden` might exists, * - `config.statusBar.style` is a recognizable value (one of `SplashScreenStatusBarStyle`), * - `config.statusBar.translucent` might exist, * - `config.statusBar.backgroundColor` is a valid css-formatted color, * * - `config.darkMode.backgroundColor` is a valid css-formatted color, * - `config.darkMode.imagePath` * - is provided only if `config.darkMode.backgroundColor` is provided as well * - and it's pointing to a valid .png file, * * - `config.darkMode.statusBar.style` * - is provided only if `config.darkMode.backgroundColor` is provided as well * - and `config.statusBar.style` is provided as well * - and it's a recognizable value (one of `SplashScreenStatusBarStyle`), * - `config.darkMode.statusBar.backgroundColor` * - is provided only if `config.darkMode.backgroundColor` is provided as well * - and `config.statusBar.backgroundColor` is provided as well * - and it's a valid css-formatted color, */ async function validateAndroidConfig(config) { const validator = new FromJsonValidator_1.default() .addRule(['backgroundColor'], utils_1.validateColor) .addRule(['image'], utils_1.validateFileIsPng) .addRule(['imageResizeMode'], (value, config) => { utils_1.ensurePropertyExists(config, ['image']); return utils_1.generateValidateEnumValue(constants_1.SplashScreenImageResizeMode)(value); }) .addRule(['statusBar', 'hidden']) .addRule(['statusBar', 'style'], utils_1.generateValidateEnumValue(constants_1.SplashScreenStatusBarStyle)) .addRule(['statusBar', 'translucent']) .addRule(['statusBar', 'backgroundColor'], utils_1.validateColor) .addRule(['darkMode', 'backgroundColor'], utils_1.validateColor) .addRule(['darkMode', 'image'], (value, config) => { utils_1.ensurePropertyExists(config, ['darkMode', 'backgroundColor']); return utils_1.validateFileIsPng(value); }) .addRule(['darkMode', 'statusBar', 'style'], (value, config) => { utils_1.ensurePropertyExists(config, ['darkMode', 'backgroundColor']); utils_1.ensurePropertyExists(config, ['statusBar', 'style']); return utils_1.generateValidateEnumValue(constants_1.SplashScreenStatusBarStyle)(value); }) .addRule(['darkMode', 'statusBar', 'backgroundColor'], (value, config) => { utils_1.ensurePropertyExists(config, ['darkMode', 'backgroundColor']); utils_1.ensurePropertyExists(config, ['statusBar', 'backgroundColor']); return utils_1.validateColor(value); }); const validatedConfig = await validator.validate(config); return validatedConfig; } exports.validateAndroidConfig = validateAndroidConfig; //# sourceMappingURL=index.js.map