UNPKG

lux-framework

Version:

Build scalable, Node.js-powered REST APIs with almost no code.

30 lines (22 loc) 571 B
// @flow import { posix } from 'path'; import type { Bundle$Namespace } from '../../index'; export default function closestAncestor<T>( source: Bundle$Namespace<T>, key: string ): void | T { const name = posix.basename(key); let namespace = posix.dirname(key); if (namespace === '.') { return source.get(name); } namespace = posix.dirname(namespace); const ancestor = source.get(posix.join(namespace, name)); if (ancestor) { return ancestor; } return closestAncestor( source, posix.join(posix.dirname(namespace), name) ); }