This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.

116 lines
6.1 KiB
JavaScript
Raw Normal View History

2021-04-02 02:24:13 +03:00
"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