route-sage-react
Version:
A TypeScript utility for managing and configuring routes with type safety and nested route support
42 lines (41 loc) • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.connect = void 0;
exports.createPathConfig = createPathConfig;
const transformPathConfig = (paths) => {
const transform = (node, parentUrl = "") => {
return ((...args) => {
const result = node(...args);
const currentUrl = `${parentUrl}${result.url}`;
// Recursively transform any nested objects while preserving other properties
const transformedResult = Object.entries(result).reduce((acc, [key, value]) => {
if (key !== "element" && typeof value === "function") {
// @ts-expect-error Type error
acc[key] = transform(value, currentUrl);
}
else {
// @ts-expect-error Type error
acc[key] = value;
}
return acc;
}, {});
return Object.assign(Object.assign({}, transformedResult), { url: currentUrl });
});
};
return Object.entries(paths).reduce((acc, [key, value]) => {
// @ts-expect-error Type error
acc[key] = transform(value);
console.log("Transformed paths", acc);
return acc;
}, {});
};
// Transformed paths
const connect = (pathConfig) => ({
paths: transformPathConfig(pathConfig),
count: Object.keys(pathConfig).length,
});
exports.connect = connect;
function createPathConfig(config) {
return (0, exports.connect)(config);
}
exports.default = createPathConfig;