UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

56 lines (52 loc) 2.03 kB
const formatToList = items => Object.entries(items).map(([key, value]) => `- ${key} (${value})`).join("\n"); function validatePathConfig(config, root = true) { const validation = { path: "string", initialRouteName: "string", screens: "object", // @modified - start preserveDynamicRoutes: "boolean", preserveGroups: "boolean", // @modified - end ...(root ? null : { 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)}.`); } const validationErrors = Object.fromEntries(Object.keys(config).map(key => { if (key in validation) { const type = validation[key]; const value = config[key]; if (value !== void 0 && 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(([_, value]) => { if (typeof value !== "string") { validatePathConfig(value, false); } }); } } export { validatePathConfig }; //# sourceMappingURL=validatePathConfig.mjs.map