rehydra 0.5.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/cli/commands/anonymize.d.ts.map +1 -1
- package/dist/cli/commands/anonymize.js +16 -0
- package/dist/cli/commands/anonymize.js.map +1 -1
- package/dist/cli/commands/inspect.d.ts.map +1 -1
- package/dist/cli/commands/inspect.js +7 -0
- package/dist/cli/commands/inspect.js.map +1 -1
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +6 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/core/anonymizer.d.ts +8 -1
- package/dist/core/anonymizer.d.ts.map +1 -1
- package/dist/core/anonymizer.js +68 -2
- package/dist/core/anonymizer.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/opencode-plugin/index.d.ts +7 -0
- package/dist/opencode-plugin/index.d.ts.map +1 -0
- package/dist/opencode-plugin/index.js +6 -0
- package/dist/opencode-plugin/index.js.map +1 -0
- package/dist/opencode-plugin/plugin.d.ts +61 -0
- package/dist/opencode-plugin/plugin.d.ts.map +1 -0
- package/dist/opencode-plugin/plugin.js +234 -0
- package/dist/opencode-plugin/plugin.js.map +1 -0
- package/dist/opencode-plugin/types.d.ts +28 -0
- package/dist/opencode-plugin/types.d.ts.map +1 -0
- package/dist/opencode-plugin/types.js +5 -0
- package/dist/opencode-plugin/types.js.map +1 -0
- package/dist/pipeline/tagger.js +1 -1
- package/dist/pipeline/tagger.js.map +1 -1
- package/dist/recognizers/index.d.ts +2 -0
- package/dist/recognizers/index.d.ts.map +1 -1
- package/dist/recognizers/index.js +2 -0
- package/dist/recognizers/index.js.map +1 -1
- package/dist/recognizers/secrets/api-key.d.ts +6 -0
- package/dist/recognizers/secrets/api-key.d.ts.map +1 -0
- package/dist/recognizers/secrets/api-key.js +40 -0
- package/dist/recognizers/secrets/api-key.js.map +1 -0
- package/dist/recognizers/secrets/aws-credentials.d.ts +7 -0
- package/dist/recognizers/secrets/aws-credentials.d.ts.map +1 -0
- package/dist/recognizers/secrets/aws-credentials.js +68 -0
- package/dist/recognizers/secrets/aws-credentials.js.map +1 -0
- package/dist/recognizers/secrets/config-secret.d.ts +8 -0
- package/dist/recognizers/secrets/config-secret.d.ts.map +1 -0
- package/dist/recognizers/secrets/config-secret.js +59 -0
- package/dist/recognizers/secrets/config-secret.js.map +1 -0
- package/dist/recognizers/secrets/connection-string.d.ts +6 -0
- package/dist/recognizers/secrets/connection-string.d.ts.map +1 -0
- package/dist/recognizers/secrets/connection-string.js +40 -0
- package/dist/recognizers/secrets/connection-string.js.map +1 -0
- package/dist/recognizers/secrets/env-var.d.ts +8 -0
- package/dist/recognizers/secrets/env-var.d.ts.map +1 -0
- package/dist/recognizers/secrets/env-var.js +54 -0
- package/dist/recognizers/secrets/env-var.js.map +1 -0
- package/dist/recognizers/secrets/index.d.ts +19 -0
- package/dist/recognizers/secrets/index.d.ts.map +1 -0
- package/dist/recognizers/secrets/index.js +35 -0
- package/dist/recognizers/secrets/index.js.map +1 -0
- package/dist/recognizers/secrets/jwt.d.ts +6 -0
- package/dist/recognizers/secrets/jwt.d.ts.map +1 -0
- package/dist/recognizers/secrets/jwt.js +47 -0
- package/dist/recognizers/secrets/jwt.js.map +1 -0
- package/dist/recognizers/secrets/key-patterns.d.ts +10 -0
- package/dist/recognizers/secrets/key-patterns.d.ts.map +1 -0
- package/dist/recognizers/secrets/key-patterns.js +15 -0
- package/dist/recognizers/secrets/key-patterns.js.map +1 -0
- package/dist/recognizers/secrets/literal-value.d.ts +10 -0
- package/dist/recognizers/secrets/literal-value.d.ts.map +1 -0
- package/dist/recognizers/secrets/literal-value.js +48 -0
- package/dist/recognizers/secrets/literal-value.js.map +1 -0
- package/dist/recognizers/secrets/private-key.d.ts +6 -0
- package/dist/recognizers/secrets/private-key.d.ts.map +1 -0
- package/dist/recognizers/secrets/private-key.js +16 -0
- package/dist/recognizers/secrets/private-key.js.map +1 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +6 -4
- package/dist/types/index.js.map +1 -1
- package/dist/types/pii-types.d.ts +12 -1
- package/dist/types/pii-types.d.ts.map +1 -1
- package/dist/types/pii-types.js +28 -0
- package/dist/types/pii-types.js.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connection String Recognizer
|
|
3
|
+
* Detects database/service URIs with embedded credentials
|
|
4
|
+
*/
|
|
5
|
+
import { createRegexRecognizer } from "../base.js";
|
|
6
|
+
import { PIIType } from "../../types/index.js";
|
|
7
|
+
const PLACEHOLDER_PASSWORDS = new Set([
|
|
8
|
+
"password", "pass", "changeme", "secret", "xxx", "yyy",
|
|
9
|
+
"your-password", "your_password", "example", "<password>",
|
|
10
|
+
]);
|
|
11
|
+
export const connectionStringRecognizer = createRegexRecognizer({
|
|
12
|
+
type: PIIType.CONNECTION_STRING,
|
|
13
|
+
name: "Connection String",
|
|
14
|
+
defaultConfidence: 0.93,
|
|
15
|
+
patterns: [
|
|
16
|
+
// postgres://user:password@host/db
|
|
17
|
+
/\b(?:postgres(?:ql)?|mysql|mariadb):\/\/[^\s:]+:[^\s@]+@[^\s]+/g,
|
|
18
|
+
// mongodb+srv://user:password@host/db
|
|
19
|
+
/\bmongodb(?:\+srv)?:\/\/[^\s:]+:[^\s@]+@[^\s]+/g,
|
|
20
|
+
// redis://user:password@host:port or redis://:password@host:port
|
|
21
|
+
/\brediss?:\/\/(?:[^\s:]*:)?[^\s@]+@[^\s]+/g,
|
|
22
|
+
// amqp://user:password@host:port
|
|
23
|
+
/\bamqps?:\/\/[^\s:]+:[^\s@]+@[^\s]+/g,
|
|
24
|
+
],
|
|
25
|
+
validate(match) {
|
|
26
|
+
// Extract password portion (between first : after // and @)
|
|
27
|
+
const credMatch = match.match(/:\/\/[^:]*:([^@]+)@/);
|
|
28
|
+
if (credMatch === null)
|
|
29
|
+
return false;
|
|
30
|
+
const password = credMatch[1];
|
|
31
|
+
// Reject placeholder passwords
|
|
32
|
+
if (PLACEHOLDER_PASSWORDS.has(password.toLowerCase()))
|
|
33
|
+
return false;
|
|
34
|
+
// Reject very short passwords (likely placeholders)
|
|
35
|
+
if (password.length < 4)
|
|
36
|
+
return false;
|
|
37
|
+
return true;
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=connection-string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-string.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/connection-string.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK;IACtD,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY;CAC1D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,qBAAqB,CAAC;IAC9D,IAAI,EAAE,OAAO,CAAC,iBAAiB;IAC/B,IAAI,EAAE,mBAAmB;IACzB,iBAAiB,EAAE,IAAI;IACvB,QAAQ,EAAE;QACR,mCAAmC;QACnC,iEAAiE;QACjE,sCAAsC;QACtC,iDAAiD;QACjD,iEAAiE;QACjE,4CAA4C;QAC5C,iCAAiC;QACjC,sCAAsC;KACvC;IACD,QAAQ,CAAC,KAAa;QACpB,4DAA4D;QAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACrD,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAErC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;QAC/B,+BAA+B;QAC/B,IAAI,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACpE,oDAAoD;QACpD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAEtC,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Variable Secret Recognizer
|
|
3
|
+
* Detects secrets in .env-style KEY=VALUE lines
|
|
4
|
+
*/
|
|
5
|
+
import type { Recognizer } from "../base.js";
|
|
6
|
+
export declare function createEnvVarSecretRecognizer(minValueLength?: number, extraKeyPatterns?: RegExp[]): Recognizer;
|
|
7
|
+
export declare const envVarSecretRecognizer: Recognizer;
|
|
8
|
+
//# sourceMappingURL=env-var.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-var.d.ts","sourceRoot":"","sources":["../../../src/recognizers/secrets/env-var.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAa7C,wBAAgB,4BAA4B,CAC1C,cAAc,GAAE,MAA2B,EAC3C,gBAAgB,GAAE,MAAM,EAAO,GAC9B,UAAU,CAyCZ;AAED,eAAO,MAAM,sBAAsB,YAAiC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment Variable Secret Recognizer
|
|
3
|
+
* Detects secrets in .env-style KEY=VALUE lines
|
|
4
|
+
*/
|
|
5
|
+
import { PIIType, DetectionSource } from "../../types/index.js";
|
|
6
|
+
import { isSecretKeyName } from "./key-patterns.js";
|
|
7
|
+
const ENV_VAR_LINE = /^[ \t]*(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)[ \t]*=[ \t]*["']?(.+?)["']?$/gm;
|
|
8
|
+
const PLACEHOLDER_VALUES = new Set([
|
|
9
|
+
"changeme", "your-api-key-here", "your_api_key_here",
|
|
10
|
+
"xxx", "yyy", "zzz", "todo", "fixme", "replace_me",
|
|
11
|
+
"example", "test", "dummy", "placeholder",
|
|
12
|
+
]);
|
|
13
|
+
const DEFAULT_MIN_LENGTH = 4;
|
|
14
|
+
export function createEnvVarSecretRecognizer(minValueLength = DEFAULT_MIN_LENGTH, extraKeyPatterns = []) {
|
|
15
|
+
return {
|
|
16
|
+
type: PIIType.ENV_VAR_SECRET,
|
|
17
|
+
name: "Environment Variable Secret",
|
|
18
|
+
defaultConfidence: 0.88,
|
|
19
|
+
find(text) {
|
|
20
|
+
const matches = [];
|
|
21
|
+
for (const match of text.matchAll(ENV_VAR_LINE)) {
|
|
22
|
+
if (match.index === undefined)
|
|
23
|
+
continue;
|
|
24
|
+
const key = match[1];
|
|
25
|
+
const value = match[2];
|
|
26
|
+
// Check if key name suggests a secret
|
|
27
|
+
const keyIsSecret = isSecretKeyName(key)
|
|
28
|
+
|| extraKeyPatterns.some((p) => p.test(key));
|
|
29
|
+
if (!keyIsSecret)
|
|
30
|
+
continue;
|
|
31
|
+
// Filter out short or placeholder values
|
|
32
|
+
if (value.length < minValueLength)
|
|
33
|
+
continue;
|
|
34
|
+
if (PLACEHOLDER_VALUES.has(value.toLowerCase()))
|
|
35
|
+
continue;
|
|
36
|
+
// Span covers the VALUE portion only
|
|
37
|
+
const fullLine = match[0];
|
|
38
|
+
const valueStartInLine = fullLine.lastIndexOf(value);
|
|
39
|
+
const valueStart = match.index + valueStartInLine;
|
|
40
|
+
matches.push({
|
|
41
|
+
type: PIIType.ENV_VAR_SECRET,
|
|
42
|
+
start: valueStart,
|
|
43
|
+
end: valueStart + value.length,
|
|
44
|
+
confidence: 0.88,
|
|
45
|
+
source: DetectionSource.REGEX,
|
|
46
|
+
text: value,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return matches;
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export const envVarSecretRecognizer = createEnvVarSecretRecognizer();
|
|
54
|
+
//# sourceMappingURL=env-var.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-var.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/env-var.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAkB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,YAAY,GAAG,8EAA8E,CAAC;AAEpG,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,UAAU,EAAE,mBAAmB,EAAE,mBAAmB;IACpD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY;IAClD,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;CAC1C,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,MAAM,UAAU,4BAA4B,CAC1C,iBAAyB,kBAAkB,EAC3C,mBAA6B,EAAE;IAE/B,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,cAAc;QAC5B,IAAI,EAAE,6BAA6B;QACnC,iBAAiB,EAAE,IAAI;QAEvB,IAAI,CAAC,IAAY;YACf,MAAM,OAAO,GAAgB,EAAE,CAAC;YAEhC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,SAAS;gBACxC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;gBAExB,sCAAsC;gBACtC,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC;uBACnC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/C,IAAI,CAAC,WAAW;oBAAE,SAAS;gBAE3B,yCAAyC;gBACzC,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc;oBAAE,SAAS;gBAC5C,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBAAE,SAAS;gBAE1D,qCAAqC;gBACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACrD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,GAAG,gBAAgB,CAAC;gBAElD,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,OAAO,CAAC,cAAc;oBAC5B,KAAK,EAAE,UAAU;oBACjB,GAAG,EAAE,UAAU,GAAG,KAAK,CAAC,MAAM;oBAC9B,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,eAAe,CAAC,KAAK;oBAC7B,IAAI,EAAE,KAAK;iBACZ,CAAC,CAAC;YACL,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,4BAA4B,EAAE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret Recognizers Module
|
|
3
|
+
* Exports all secret/credential recognizers
|
|
4
|
+
*/
|
|
5
|
+
import type { Recognizer } from "../base.js";
|
|
6
|
+
export { apiKeyRecognizer } from "./api-key.js";
|
|
7
|
+
export { privateKeyRecognizer } from "./private-key.js";
|
|
8
|
+
export { jwtRecognizer } from "./jwt.js";
|
|
9
|
+
export { connectionStringRecognizer } from "./connection-string.js";
|
|
10
|
+
export { awsCredentialsRecognizer } from "./aws-credentials.js";
|
|
11
|
+
export { envVarSecretRecognizer, createEnvVarSecretRecognizer } from "./env-var.js";
|
|
12
|
+
export { configSecretRecognizer, createConfigSecretRecognizer } from "./config-secret.js";
|
|
13
|
+
export { createLiteralValueRecognizer } from "./literal-value.js";
|
|
14
|
+
export { isSecretKeyName } from "./key-patterns.js";
|
|
15
|
+
/**
|
|
16
|
+
* Creates all secret recognizers
|
|
17
|
+
*/
|
|
18
|
+
export declare function createSecretRecognizers(): Recognizer[];
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/recognizers/secrets/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,UAAU,EAAE,CAUtD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret Recognizers Module
|
|
3
|
+
* Exports all secret/credential recognizers
|
|
4
|
+
*/
|
|
5
|
+
import { apiKeyRecognizer } from "./api-key.js";
|
|
6
|
+
import { privateKeyRecognizer } from "./private-key.js";
|
|
7
|
+
import { jwtRecognizer } from "./jwt.js";
|
|
8
|
+
import { connectionStringRecognizer } from "./connection-string.js";
|
|
9
|
+
import { awsCredentialsRecognizer } from "./aws-credentials.js";
|
|
10
|
+
import { envVarSecretRecognizer } from "./env-var.js";
|
|
11
|
+
import { configSecretRecognizer } from "./config-secret.js";
|
|
12
|
+
export { apiKeyRecognizer } from "./api-key.js";
|
|
13
|
+
export { privateKeyRecognizer } from "./private-key.js";
|
|
14
|
+
export { jwtRecognizer } from "./jwt.js";
|
|
15
|
+
export { connectionStringRecognizer } from "./connection-string.js";
|
|
16
|
+
export { awsCredentialsRecognizer } from "./aws-credentials.js";
|
|
17
|
+
export { envVarSecretRecognizer, createEnvVarSecretRecognizer } from "./env-var.js";
|
|
18
|
+
export { configSecretRecognizer, createConfigSecretRecognizer } from "./config-secret.js";
|
|
19
|
+
export { createLiteralValueRecognizer } from "./literal-value.js";
|
|
20
|
+
export { isSecretKeyName } from "./key-patterns.js";
|
|
21
|
+
/**
|
|
22
|
+
* Creates all secret recognizers
|
|
23
|
+
*/
|
|
24
|
+
export function createSecretRecognizers() {
|
|
25
|
+
return [
|
|
26
|
+
apiKeyRecognizer,
|
|
27
|
+
privateKeyRecognizer,
|
|
28
|
+
jwtRecognizer,
|
|
29
|
+
connectionStringRecognizer,
|
|
30
|
+
awsCredentialsRecognizer,
|
|
31
|
+
envVarSecretRecognizer,
|
|
32
|
+
configSecretRecognizer,
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,gBAAgB;QAChB,oBAAoB;QACpB,aAAa;QACb,0BAA0B;QAC1B,wBAAwB;QACxB,sBAAsB;QACtB,sBAAsB;KACvB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../src/recognizers/secrets/jwt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,eAAO,MAAM,aAAa,iCAuBxB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JWT Recognizer
|
|
3
|
+
* Detects JSON Web Tokens (three base64url dot-separated segments)
|
|
4
|
+
*/
|
|
5
|
+
import { createRegexRecognizer } from "../base.js";
|
|
6
|
+
import { PIIType } from "../../types/index.js";
|
|
7
|
+
/**
|
|
8
|
+
* Decode base64url to string (no padding required)
|
|
9
|
+
*/
|
|
10
|
+
function base64urlDecode(str) {
|
|
11
|
+
try {
|
|
12
|
+
// Replace base64url chars with standard base64
|
|
13
|
+
const base64 = str.replace(/-/g, "+").replace(/_/g, "/");
|
|
14
|
+
// Add padding if needed
|
|
15
|
+
const padded = base64 + "=".repeat((4 - (base64.length % 4)) % 4);
|
|
16
|
+
return atob(padded);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export const jwtRecognizer = createRegexRecognizer({
|
|
23
|
+
type: PIIType.JWT,
|
|
24
|
+
name: "JWT",
|
|
25
|
+
defaultConfidence: 0.95,
|
|
26
|
+
patterns: [
|
|
27
|
+
// JWT: eyJ header prefix, three base64url segments separated by dots
|
|
28
|
+
/\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g,
|
|
29
|
+
],
|
|
30
|
+
validate(match) {
|
|
31
|
+
const parts = match.split(".");
|
|
32
|
+
if (parts.length !== 3)
|
|
33
|
+
return false;
|
|
34
|
+
// Decode header and verify it has an "alg" field
|
|
35
|
+
const header = base64urlDecode(parts[0]);
|
|
36
|
+
if (header === null)
|
|
37
|
+
return false;
|
|
38
|
+
try {
|
|
39
|
+
const parsed = JSON.parse(header);
|
|
40
|
+
return typeof parsed.alg === "string";
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=jwt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/jwt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C;;GAEG;AACH,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,+CAA+C;QAC/C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzD,wBAAwB;QACxB,MAAM,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,qBAAqB,CAAC;IACjD,IAAI,EAAE,OAAO,CAAC,GAAG;IACjB,IAAI,EAAE,KAAK;IACX,iBAAiB,EAAE,IAAI;IACvB,QAAQ,EAAE;QACR,qEAAqE;QACrE,oEAAoE;KACrE;IACD,QAAQ,CAAC,KAAa;QACpB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAErC,iDAAiD;QACjD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QAC1C,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAA4B,CAAC;YAC7D,OAAO,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared secret key name patterns
|
|
3
|
+
* Used by ENV_VAR_SECRET and CONFIG_SECRET recognizers
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Checks if a key/variable name suggests it holds a secret value.
|
|
7
|
+
* Handles snake_case, camelCase, and kebab-case.
|
|
8
|
+
*/
|
|
9
|
+
export declare function isSecretKeyName(key: string): boolean;
|
|
10
|
+
//# sourceMappingURL=key-patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-patterns.d.ts","sourceRoot":"","sources":["../../../src/recognizers/secrets/key-patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIpD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared secret key name patterns
|
|
3
|
+
* Used by ENV_VAR_SECRET and CONFIG_SECRET recognizers
|
|
4
|
+
*/
|
|
5
|
+
const SECRET_KEY_PATTERN = /^(?:.*_)?(?:password|passwd|pwd|pass|secret|secret_key|secretkey|token|access_token|refresh_token|auth_token|api_key|apikey|api_secret|private_key|privatekey|credential|credentials|connection_string|connectionstring|database_url|dsn|encryption_key|signing_key|client_secret|app_secret|master_key|auth|bearer|jwt|api_token)(?:_.*)?$/i;
|
|
6
|
+
/**
|
|
7
|
+
* Checks if a key/variable name suggests it holds a secret value.
|
|
8
|
+
* Handles snake_case, camelCase, and kebab-case.
|
|
9
|
+
*/
|
|
10
|
+
export function isSecretKeyName(key) {
|
|
11
|
+
// Normalize camelCase/PascalCase to snake_case for matching
|
|
12
|
+
const normalized = key.replace(/([a-z])([A-Z])/g, "$1_$2").replace(/-/g, "_");
|
|
13
|
+
return SECRET_KEY_PATTERN.test(normalized);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=key-patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-patterns.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/key-patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,kBAAkB,GAAG,8UAA8U,CAAC;AAE1W;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,4DAA4D;IAC5D,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9E,OAAO,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Literal Value Recognizer
|
|
3
|
+
* Scans for exact occurrences of known secret values (e.g., from .env files)
|
|
4
|
+
*/
|
|
5
|
+
import type { Recognizer } from "../base.js";
|
|
6
|
+
/**
|
|
7
|
+
* Creates a recognizer that matches exact known secret values in text.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createLiteralValueRecognizer(values: string[], minLength?: number): Recognizer;
|
|
10
|
+
//# sourceMappingURL=literal-value.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"literal-value.d.ts","sourceRoot":"","sources":["../../../src/recognizers/secrets/literal-value.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAU7C;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,GAAE,MAAU,GACpB,UAAU,CAuCZ"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Literal Value Recognizer
|
|
3
|
+
* Scans for exact occurrences of known secret values (e.g., from .env files)
|
|
4
|
+
*/
|
|
5
|
+
import { PIIType, DetectionSource } from "../../types/index.js";
|
|
6
|
+
const COMMON_NON_SECRET_VALUES = new Set([
|
|
7
|
+
"true", "false", "yes", "no", "on", "off",
|
|
8
|
+
"null", "undefined", "none",
|
|
9
|
+
"0", "1", "localhost", "127.0.0.1", "0.0.0.0",
|
|
10
|
+
"development", "production", "staging", "test",
|
|
11
|
+
"utf-8", "utf8", "ascii",
|
|
12
|
+
]);
|
|
13
|
+
/**
|
|
14
|
+
* Creates a recognizer that matches exact known secret values in text.
|
|
15
|
+
*/
|
|
16
|
+
export function createLiteralValueRecognizer(values, minLength = 4) {
|
|
17
|
+
// Filter out short and common values
|
|
18
|
+
const secretValues = values.filter((v) => v.length >= minLength && !COMMON_NON_SECRET_VALUES.has(v.toLowerCase()));
|
|
19
|
+
// Sort by length descending so longer matches are found first
|
|
20
|
+
secretValues.sort((a, b) => b.length - a.length);
|
|
21
|
+
return {
|
|
22
|
+
type: PIIType.ENV_VAR_SECRET,
|
|
23
|
+
name: "Literal Secret Value",
|
|
24
|
+
defaultConfidence: 1.0,
|
|
25
|
+
find(text) {
|
|
26
|
+
const matches = [];
|
|
27
|
+
for (const value of secretValues) {
|
|
28
|
+
let start = 0;
|
|
29
|
+
while (start < text.length) {
|
|
30
|
+
const idx = text.indexOf(value, start);
|
|
31
|
+
if (idx === -1)
|
|
32
|
+
break;
|
|
33
|
+
matches.push({
|
|
34
|
+
type: PIIType.ENV_VAR_SECRET,
|
|
35
|
+
start: idx,
|
|
36
|
+
end: idx + value.length,
|
|
37
|
+
confidence: 1.0,
|
|
38
|
+
source: DetectionSource.REGEX,
|
|
39
|
+
text: value,
|
|
40
|
+
});
|
|
41
|
+
start = idx + value.length;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return matches;
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=literal-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"literal-value.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/literal-value.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAkB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGhF,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IACvC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;IACzC,MAAM,EAAE,WAAW,EAAE,MAAM;IAC3B,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS;IAC7C,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM;IAC9C,OAAO,EAAE,MAAM,EAAE,OAAO;CACzB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAgB,EAChB,YAAoB,CAAC;IAErB,qCAAqC;IACrC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,SAAS,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAC/E,CAAC;IAEF,8DAA8D;IAC9D,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAEjD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,cAAc;QAC5B,IAAI,EAAE,sBAAsB;QAC5B,iBAAiB,EAAE,GAAG;QAEtB,IAAI,CAAC,IAAY;YACf,MAAM,OAAO,GAAgB,EAAE,CAAC;YAEhC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBACjC,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACvC,IAAI,GAAG,KAAK,CAAC,CAAC;wBAAE,MAAM;oBAEtB,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAE,OAAO,CAAC,cAAc;wBAC5B,KAAK,EAAE,GAAG;wBACV,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM;wBACvB,UAAU,EAAE,GAAG;wBACf,MAAM,EAAE,eAAe,CAAC,KAAK;wBAC7B,IAAI,EAAE,KAAK;qBACZ,CAAC,CAAC;oBAEH,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"private-key.d.ts","sourceRoot":"","sources":["../../../src/recognizers/secrets/private-key.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,oBAAoB,iCAQ/B,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Private Key Recognizer
|
|
3
|
+
* Detects PEM-encoded private keys
|
|
4
|
+
*/
|
|
5
|
+
import { createRegexRecognizer } from "../base.js";
|
|
6
|
+
import { PIIType } from "../../types/index.js";
|
|
7
|
+
export const privateKeyRecognizer = createRegexRecognizer({
|
|
8
|
+
type: PIIType.PRIVATE_KEY,
|
|
9
|
+
name: "Private Key",
|
|
10
|
+
defaultConfidence: 0.99,
|
|
11
|
+
patterns: [
|
|
12
|
+
// Full PEM block (multiline)
|
|
13
|
+
/-----BEGIN (?:RSA |EC |DSA |OPENSSH |PGP |ENCRYPTED )?PRIVATE KEY-----[\s\S]*?-----END (?:RSA |EC |DSA |OPENSSH |PGP |ENCRYPTED )?PRIVATE KEY-----/g,
|
|
14
|
+
],
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=private-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"private-key.js","sourceRoot":"","sources":["../../../src/recognizers/secrets/private-key.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;IACxD,IAAI,EAAE,OAAO,CAAC,WAAW;IACzB,IAAI,EAAE,aAAa;IACnB,iBAAiB,EAAE,IAAI;IACvB,QAAQ,EAAE;QACR,6BAA6B;QAC7B,qJAAqJ;KACtJ;CACF,CAAC,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -195,6 +195,21 @@ export interface AnonymizationResult {
|
|
|
195
195
|
/**
|
|
196
196
|
* Creates a default anonymization policy with all types enabled
|
|
197
197
|
*/
|
|
198
|
+
/**
|
|
199
|
+
* Secrets/credentials detection configuration
|
|
200
|
+
*/
|
|
201
|
+
export interface SecretsConfig {
|
|
202
|
+
/** Enable secrets/credentials detection */
|
|
203
|
+
enabled: boolean;
|
|
204
|
+
/** .env file paths to parse for known secret values */
|
|
205
|
+
envFiles?: string[];
|
|
206
|
+
/** Explicit values to always redact */
|
|
207
|
+
redactValues?: string[];
|
|
208
|
+
/** Additional key name patterns for ENV_VAR_SECRET / CONFIG_SECRET detection */
|
|
209
|
+
secretKeyPatterns?: RegExp[];
|
|
210
|
+
/** Minimum value length to consider as a secret (default: 4) */
|
|
211
|
+
minValueLength?: number;
|
|
212
|
+
}
|
|
198
213
|
export declare function createDefaultPolicy(): AnonymizationPolicy;
|
|
199
214
|
/**
|
|
200
215
|
* Merges a partial policy with defaults
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PIIType, DEFAULT_TYPE_PRIORITY } from "./pii-types.js";
|
|
1
|
+
import { PIIType, DEFAULT_TYPE_PRIORITY, SECRET_PII_TYPES } from "./pii-types.js";
|
|
2
2
|
export * from "./pii-types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Source of entity detection
|
|
@@ -9,11 +9,13 @@ export var DetectionSource;
|
|
|
9
9
|
DetectionSource["NER"] = "NER";
|
|
10
10
|
DetectionSource["HYBRID"] = "HYBRID";
|
|
11
11
|
})(DetectionSource || (DetectionSource = {}));
|
|
12
|
-
/**
|
|
13
|
-
* Creates a default anonymization policy with all types enabled
|
|
14
|
-
*/
|
|
15
12
|
export function createDefaultPolicy() {
|
|
16
13
|
const allTypes = new Set(Object.values(PIIType));
|
|
14
|
+
// Secret types are opt-in only — exclude from default enabled set
|
|
15
|
+
const secretTypeSet = new Set(SECRET_PII_TYPES);
|
|
16
|
+
for (const secretType of secretTypeSet) {
|
|
17
|
+
allTypes.delete(secretType);
|
|
18
|
+
}
|
|
17
19
|
const defaultThresholds = new Map();
|
|
18
20
|
for (const type of allTypes) {
|
|
19
21
|
// Higher threshold for NER-detected types (more uncertainty)
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,14 @@ export declare enum PIIType {
|
|
|
19
19
|
NATIONAL_ID = "NATIONAL_ID",
|
|
20
20
|
DATE_OF_BIRTH = "DATE_OF_BIRTH",
|
|
21
21
|
CASE_ID = "CASE_ID",
|
|
22
|
-
CUSTOMER_ID = "CUSTOMER_ID"
|
|
22
|
+
CUSTOMER_ID = "CUSTOMER_ID",
|
|
23
|
+
API_KEY = "API_KEY",
|
|
24
|
+
PRIVATE_KEY = "PRIVATE_KEY",
|
|
25
|
+
JWT = "JWT",
|
|
26
|
+
CONNECTION_STRING = "CONNECTION_STRING",
|
|
27
|
+
AWS_CREDENTIALS = "AWS_CREDENTIALS",
|
|
28
|
+
ENV_VAR_SECRET = "ENV_VAR_SECRET",
|
|
29
|
+
CONFIG_SECRET = "CONFIG_SECRET"
|
|
23
30
|
}
|
|
24
31
|
/**
|
|
25
32
|
* All PII types as a readonly array for iteration
|
|
@@ -29,6 +36,10 @@ export declare const ALL_PII_TYPES: readonly PIIType[];
|
|
|
29
36
|
* PII types that are detected via regex (structured PII)
|
|
30
37
|
*/
|
|
31
38
|
export declare const REGEX_PII_TYPES: readonly PIIType[];
|
|
39
|
+
/**
|
|
40
|
+
* PII types that are secrets/credentials (opt-in, regex-based)
|
|
41
|
+
*/
|
|
42
|
+
export declare const SECRET_PII_TYPES: readonly PIIType[];
|
|
32
43
|
/**
|
|
33
44
|
* PII types that are detected via NER model (soft PII)
|
|
34
45
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pii-types.d.ts","sourceRoot":"","sources":["../../src/types/pii-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,OAAO;IAEjB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,OAAO,YAAY;IAGnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,UAAU,eAAe;IAGzB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAG3B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAG/B,OAAO,YAAY;IACnB,WAAW,gBAAgB;
|
|
1
|
+
{"version":3,"file":"pii-types.d.ts","sourceRoot":"","sources":["../../src/types/pii-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,OAAO;IAEjB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,QAAQ,aAAa;IACrB,OAAO,YAAY;IAGnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,UAAU,eAAe;IAGzB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAG3B,MAAM,WAAW;IACjB,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAG/B,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAG3B,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,GAAG,QAAQ;IACX,iBAAiB,sBAAsB;IACvC,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,OAAO,EAAwC,CAAC;AAErF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,OAAO,EAa7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,OAAO,EAQ9C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,OAAO,EAM3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,OAAO,EA6BnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAWzD,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CASpE"}
|
package/dist/types/pii-types.js
CHANGED
|
@@ -26,6 +26,14 @@ export var PIIType;
|
|
|
26
26
|
// Custom/Business identifiers
|
|
27
27
|
PIIType["CASE_ID"] = "CASE_ID";
|
|
28
28
|
PIIType["CUSTOMER_ID"] = "CUSTOMER_ID";
|
|
29
|
+
// Secrets/Credentials
|
|
30
|
+
PIIType["API_KEY"] = "API_KEY";
|
|
31
|
+
PIIType["PRIVATE_KEY"] = "PRIVATE_KEY";
|
|
32
|
+
PIIType["JWT"] = "JWT";
|
|
33
|
+
PIIType["CONNECTION_STRING"] = "CONNECTION_STRING";
|
|
34
|
+
PIIType["AWS_CREDENTIALS"] = "AWS_CREDENTIALS";
|
|
35
|
+
PIIType["ENV_VAR_SECRET"] = "ENV_VAR_SECRET";
|
|
36
|
+
PIIType["CONFIG_SECRET"] = "CONFIG_SECRET";
|
|
29
37
|
})(PIIType || (PIIType = {}));
|
|
30
38
|
/**
|
|
31
39
|
* All PII types as a readonly array for iteration
|
|
@@ -48,6 +56,18 @@ export const REGEX_PII_TYPES = [
|
|
|
48
56
|
PIIType.CASE_ID,
|
|
49
57
|
PIIType.CUSTOMER_ID,
|
|
50
58
|
];
|
|
59
|
+
/**
|
|
60
|
+
* PII types that are secrets/credentials (opt-in, regex-based)
|
|
61
|
+
*/
|
|
62
|
+
export const SECRET_PII_TYPES = [
|
|
63
|
+
PIIType.API_KEY,
|
|
64
|
+
PIIType.PRIVATE_KEY,
|
|
65
|
+
PIIType.JWT,
|
|
66
|
+
PIIType.CONNECTION_STRING,
|
|
67
|
+
PIIType.AWS_CREDENTIALS,
|
|
68
|
+
PIIType.ENV_VAR_SECRET,
|
|
69
|
+
PIIType.CONFIG_SECRET,
|
|
70
|
+
];
|
|
51
71
|
/**
|
|
52
72
|
* PII types that are detected via NER model (soft PII)
|
|
53
73
|
*/
|
|
@@ -83,6 +103,14 @@ export const DEFAULT_TYPE_PRIORITY = [
|
|
|
83
103
|
PIIType.CREDIT_CARD,
|
|
84
104
|
PIIType.TAX_ID,
|
|
85
105
|
PIIType.NATIONAL_ID,
|
|
106
|
+
// Highest priority (secrets/credentials)
|
|
107
|
+
PIIType.ENV_VAR_SECRET,
|
|
108
|
+
PIIType.CONFIG_SECRET,
|
|
109
|
+
PIIType.CONNECTION_STRING,
|
|
110
|
+
PIIType.AWS_CREDENTIALS,
|
|
111
|
+
PIIType.API_KEY,
|
|
112
|
+
PIIType.PRIVATE_KEY,
|
|
113
|
+
PIIType.JWT,
|
|
86
114
|
];
|
|
87
115
|
/**
|
|
88
116
|
* Maps NER model labels to PIIType
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pii-types.js","sourceRoot":"","sources":["../../src/types/pii-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"pii-types.js","sourceRoot":"","sources":["../../src/types/pii-types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rehydra",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "On-device PII anonymization module for high-privacy AI workflows",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -65,6 +65,10 @@
|
|
|
65
65
|
"types": "./dist/cli/main.d.ts",
|
|
66
66
|
"default": "./dist/cli/main.js"
|
|
67
67
|
}
|
|
68
|
+
},
|
|
69
|
+
"./opencode-plugin": {
|
|
70
|
+
"types": "./dist/opencode-plugin/index.d.ts",
|
|
71
|
+
"default": "./dist/opencode-plugin/index.js"
|
|
68
72
|
}
|
|
69
73
|
},
|
|
70
74
|
"files": [
|