# configuration/constants/detector.constants.ts

> 37 lines of code and 23 definitions.

Tree: Secrets
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/secrets#file-secrets-configuration-constants-detector-constants-ts
Source text: https://banes-lab.com/source/secrets/configuration/constants/detector.constants.ts.txt

Listed in [configuration/constants](https://banes-lab.com/api/source/secrets/configuration/constants.md), before [configuration/constants/environment.constants.ts](https://banes-lab.com/source/secrets/configuration/constants/environment.constants.ts.md).

## Definitions

- `DETECTOR_KINDS` (lexical_declaration, line 1, exported)
- `EXCLUSION_REASONS` (lexical_declaration, line 3, exported)
- `DETECTOR_SUFFIX` (lexical_declaration, line 5, exported)
- `TOKEN_SHAPES` (lexical_declaration, line 7, exported)
- `PEM_OPENING` (lexical_declaration, line 15, exported)
- `PRIVATE_KEY_MARK` (lexical_declaration, line 17, exported)
- `SSH_PREFIXES` (lexical_declaration, line 19, exported)
- `SSH_MIN_BODY` (lexical_declaration, line 21, exported)
- `DATABASE_SCHEMES` (lexical_declaration, line 23, exported)
- `BEARER_PREFIX` (lexical_declaration, line 33, exported)
- `BEARER_MIN_LENGTH` (lexical_declaration, line 35, exported)
- `JWT_OPENING` (lexical_declaration, line 37, exported)
- `JWT_SEGMENTS` (lexical_declaration, line 39, exported)
- `JWT_MIN_SEGMENT` (lexical_declaration, line 41, exported)
- `JWT_SEPARATOR` (lexical_declaration, line 43, exported)
- `SCHEME_MARK` (lexical_declaration, line 45, exported)
- `AUTHORITY_ENDS` (lexical_declaration, line 47, exported)
- `CREDENTIAL_AT` (lexical_declaration, line 49, exported)
- `CREDENTIAL_COLON` (lexical_declaration, line 51, exported)
- `BASE64_URL_MARKS` (lexical_declaration, line 53, exported)
- `DASH` (lexical_declaration, line 55, exported)
- `LOCAL_ADDRESSES` (lexical_declaration, line 57, exported)
- `LOOPBACK_V4_PREFIX` (lexical_declaration, line 59, exported)

## Contained in

- [configuration/constants](https://banes-lab.com/anatomy/secrets/folder-secrets-configuration-constants.md)

## Source

```typescript
export const DETECTOR_KINDS = ["address", "bearer", "credential", "database", "jwt", "key", "ssh", "token"] as const;

export const EXCLUSION_REASONS = ["third-party-rule-text", "binary", "rendered-media", "backup"] as const;

export const DETECTOR_SUFFIX = ".predicate.ts";

export const TOKEN_SHAPES = [
    { alphabet: "alnum", minRest: 20, prefixes: ["sk-"] },
    { alphabet: "alnum", minRest: 36, prefixes: ["ghp_", "gho_", "ghs_", "ghu_", "ghr_"] },
    { alphabet: "alnumDash", minRest: 20, prefixes: ["glpat-"] },
    { alphabet: "alnumDash", minRest: 10, prefixes: ["xoxb-", "xoxp-", "xoxa-", "xoxs-"] },
    { alphabet: "upperDigit", minRest: 16, prefixes: ["AKIA", "ASIA"] },
] as const;

export const PEM_OPENING = "-----BEGIN";

export const PRIVATE_KEY_MARK = "PRIVATE KEY";

export const SSH_PREFIXES: readonly string[] = ["ssh-rsa ", "ssh-ed25519 ", "ssh-dss ", "ecdsa-sha2-nistp256 "];

export const SSH_MIN_BODY = 16;

export const DATABASE_SCHEMES: readonly string[] = [
    "mongodb://",
    "mongodb+srv://",
    "postgres://",
    "postgresql://",
    "mysql://",
    "redis://",
    "amqp://",
];

export const BEARER_PREFIX = "Bearer ";

export const BEARER_MIN_LENGTH = 20;

export const JWT_OPENING = "eyJ";

export const JWT_SEGMENTS = 3;

export const JWT_MIN_SEGMENT = 8;

export const JWT_SEPARATOR = ".";

export const SCHEME_MARK = "://";

export const AUTHORITY_ENDS: ReadonlySet<string> = new Set(["/", "?", "#"]);

export const CREDENTIAL_AT = "@";

export const CREDENTIAL_COLON = ":";

export const BASE64_URL_MARKS: ReadonlySet<string> = new Set(["-", "_"]);

export const DASH = "-";

export const LOCAL_ADDRESSES: ReadonlySet<string> = new Set(["::", "0.0.0.0", "::1"]);

export const LOOPBACK_V4_PREFIX = "127.";
```
