UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

91 lines (86 loc) • 3.13 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var validatePathConfig_exports = {}; __export(validatePathConfig_exports, { validatePathConfig: () => validatePathConfig }); module.exports = __toCommonJS(validatePathConfig_exports); var formatToList = function formatToList2(items) { return Object.entries(items).map(function(param) { var [key, value] = param; return `- ${key} (${value})`; }).join("\n"); }; function validatePathConfig(config) { var root = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true; var validation = { path: "string", initialRouteName: "string", screens: "object", preserveDynamicRoutes: "boolean", preserveGroups: "boolean", ...root ? null : { alias: "array", exact: "boolean", stringify: "object", parse: "object" } }; if (typeof config !== "object" || config === null) { throw new Error(`Expected the configuration to be an object, but got ${JSON.stringify(config)}.`); } var validationErrors = Object.fromEntries(Object.keys(config).map(function(key) { if (key in validation) { var type = validation[key]; var value = config[key]; if (value !== void 0) { if (type === "array") { if (!Array.isArray(value)) { return [key, `expected 'Array', got '${typeof value}'`]; } } else if (typeof value !== type) { return [key, `expected '${type}', got '${typeof value}'`]; } } } else { return [key, "extraneous"]; } return null; }).filter(Boolean)); if (Object.keys(validationErrors).length) { throw new Error(`Found invalid properties in the configuration: ${formatToList(validationErrors)} You can only specify the following properties: ${formatToList(validation)} If you want to specify configuration for screens, you need to specify them under a 'screens' property. See https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.`); } if (root && "path" in config && typeof config.path === "string" && config.path.includes(":")) { throw new Error(`Found invalid path '${config.path}'. The 'path' in the top-level configuration cannot contain patterns for params.`); } if ("screens" in config && config.screens) { Object.entries(config.screens).forEach(function(param) { var [_, value] = param; if (typeof value !== "string") { validatePathConfig(value, false); } }); } }