mirror of
https://github.com/zhigang1992/react-navigation.git
synced 2026-03-06 22:39:41 +08:00
33 lines
1010 B
TypeScript
33 lines
1010 B
TypeScript
const formatToList = (items: string[]) =>
|
|
items.map((key) => `- ${key}`).join('\n');
|
|
|
|
export default function validatePathConfig(config: any, root = true) {
|
|
const validKeys = ['initialRouteName', 'screens'];
|
|
|
|
if (!root) {
|
|
validKeys.push('path', 'exact', 'stringify', 'parse');
|
|
}
|
|
|
|
const invalidKeys = Object.keys(config).filter(
|
|
(key) => !validKeys.includes(key)
|
|
);
|
|
|
|
if (invalidKeys.length) {
|
|
throw new Error(
|
|
`Found invalid properties in the configuration:\n${formatToList(
|
|
invalidKeys
|
|
)}\n\nDid you forget to specify them under a 'screens' property?\n\nYou can only specify the following properties:\n${formatToList(
|
|
validKeys
|
|
)}\n\nSee https://reactnavigation.org/docs/configuring-links for more details on how to specify a linking configuration.`
|
|
);
|
|
}
|
|
|
|
if (config.screens) {
|
|
Object.entries(config.screens).forEach(([_, value]) => {
|
|
if (typeof value !== 'string') {
|
|
validatePathConfig(value, false);
|
|
}
|
|
});
|
|
}
|
|
}
|