# core/selectors/source.selector.ts

> 10 lines of code and 4 definitions.

Tree: GovLab Stats
Language: typescript
Layer: application
Canonical: https://banes-lab.com/anatomy/stats#file-stats-core-selectors-source-selector-ts
Source text: https://banes-lab.com/source/stats/core/selectors/source.selector.ts.txt

Listed in [core/selectors](https://banes-lab.com/api/source/stats/core/selectors.md), after [core/selectors/metric.selector.ts](https://banes-lab.com/source/stats/core/selectors/metric.selector.ts.md).

## Definitions

- `posixOf` (lexical_declaration, line 10, exported)
- `extensionOf` (lexical_declaration, line 4, exported)
- `lower` (lexical_declaration, line 5, exported)
- `dot` (lexical_declaration, line 6, exported)

## Contained in

- [core/selectors](https://banes-lab.com/anatomy/stats/folder-stats-core-selectors.md)

## Used by

- [core/analyzers/dependency.analyzer.ts](https://banes-lab.com/source/stats/core/analyzers/dependency.analyzer.ts.md)
- [core/analyzers/site.analyzer.ts](https://banes-lab.com/source/stats/core/analyzers/site.analyzer.ts.md)
- [core/analyzers/taxonomy.analyzer.ts](https://banes-lab.com/source/stats/core/analyzers/taxonomy.analyzer.ts.md)
- [core/loaders/manifest.loader.ts](https://banes-lab.com/source/stats/core/loaders/manifest.loader.ts.md)
- [core/resolvers/package.resolver.ts](https://banes-lab.com/source/stats/core/resolvers/package.resolver.ts.md)

## Linked from

- [core/analyzers](https://banes-lab.com/anatomy/stats/folder-stats-core-analyzers.md)
- [core/loaders](https://banes-lab.com/anatomy/stats/folder-stats-core-loaders.md)
- [core/resolvers](https://banes-lab.com/anatomy/stats/folder-stats-core-resolvers.md)

## Source

```typescript
import { EXTENSION_DOT, NO_EXTENSION } from "#configuration/constants/source.constants";
import path from "node:path";

export const extensionOf = function extensionOf(name: string): string {
    const lower = name.toLowerCase();
    const dot = lower.lastIndexOf(EXTENSION_DOT);
    return dot <= 0 ? NO_EXTENSION : lower.slice(dot);
};

export const posixOf = function posixOf(relative: string): string {
    return relative.split(path.sep).join("/");
};
```
