one
Version:
One is a new React Framework that makes Vite serve both native and web.
61 lines (57 loc) • 2.03 kB
JavaScript
const formatToList = (items) => Object.entries(items).map(([key, value]) => `- ${key} (${value})`).join(`
`);
function validatePathConfig(config, root = !0) {
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], 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.`
);
"screens" in config && config.screens && Object.entries(config.screens).forEach(([_, value]) => {
typeof value != "string" && validatePathConfig(value, !1);
});
}
export {
validatePathConfig
};
//# sourceMappingURL=validatePathConfig.js.map