one
Version:
One is a new React Framework that makes Vite serve both native and web.
68 lines (63 loc) • 2.51 kB
JavaScript
function _type_of(obj) {
"@swc/helpers - typeof";
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
}
var formatToList = function (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",
// @modified - start
preserveDynamicRoutes: "boolean",
preserveGroups: "boolean",
// @modified - end
...(root ? null : {
exact: "boolean",
stringify: "object",
parse: "object"
})
};
if ((typeof config === "undefined" ? "undefined" : _type_of(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 && (typeof value === "undefined" ? "undefined" : _type_of(value)) !== type) {
return [key, `expected '${type}', got '${typeof value === "undefined" ? "undefined" : _type_of(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);
}
});
}
}
export { validatePathConfig };
//# sourceMappingURL=validatePathConfig.native.js.map