# core/predicates/reference.predicate.ts

> 12 lines of code and 5 definitions.

Tree: GovLab Docs
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/docs#file-docs-core-predicates-reference-predicate-ts
Source text: https://banes-lab.com/source/docs/core/predicates/reference.predicate.ts.txt

Listed in [core/predicates](https://banes-lab.com/api/source/docs/core/predicates.md), after [core/predicates/record.predicate.ts](https://banes-lab.com/source/docs/core/predicates/record.predicate.ts.md) and before [core/predicates/source.predicate.ts](https://banes-lab.com/source/docs/core/predicates/source.predicate.ts.md).

## Definitions

- `isRelativeTarget` (lexical_declaration, line 12, exported)
- `isExternalTarget` (lexical_declaration, line 5, exported)
- `EXTERNAL_PREFIXES` (lexical_declaration, line 1)
- `SCHEME_MARKER` (lexical_declaration, line 2)
- `RELATIVE_PREFIXES` (lexical_declaration, line 3)

## Contained in

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

## Used by

- [core/analyzers/drift.analyzer.ts](https://banes-lab.com/source/docs/core/analyzers/drift.analyzer.ts.md)
- [core/analyzers/reference.analyzer.ts](https://banes-lab.com/source/docs/core/analyzers/reference.analyzer.ts.md)
- [core/resolvers/source.resolver.ts](https://banes-lab.com/source/docs/core/resolvers/source.resolver.ts.md)
- [core/validators/manifest.prose.validator.ts](https://banes-lab.com/source/docs/core/validators/manifest.prose.validator.ts.md)

## Linked from

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

## Source

```typescript
const EXTERNAL_PREFIXES: readonly string[] = ["/", "~", "@"];
const SCHEME_MARKER = "://";
const RELATIVE_PREFIXES: readonly string[] = ["./", "../"];

export const isExternalTarget = function isExternalTarget(target: string): boolean {
    if (target === "" || target.includes(SCHEME_MARKER)) {
        return true;
    }
    return EXTERNAL_PREFIXES.some((prefix) => target.startsWith(prefix));
};

export const isRelativeTarget = function isRelativeTarget(target: string): boolean {
    return RELATIVE_PREFIXES.some((prefix) => target.startsWith(prefix));
};
```
