```ts
export function crumbSplit(trail: string): string[] {
  if (typeof trail !== 'string') {
    throw new Error('trail must be a string');
  }

  return trail.split('/').filter(segment => segment.trim() !== '');
}

export function crumbJoin(parts: string[]): string {
  if (!Array.isArray(parts)) {
    throw new Error('parts must be an array');
  }

  return parts.filter(segment => segment.trim() !== '').join('/');
}
```