glin-profanity 2.0.0 → 2.3.3

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.
Files changed (124) hide show
  1. package/README.md +338 -74
  2. package/lib/cjs/packages/js/src/core/index.d.ts +4 -0
  3. package/lib/cjs/packages/js/src/core/index.js +55 -0
  4. package/lib/cjs/packages/js/src/core/index.js.map +1 -0
  5. package/lib/cjs/packages/js/src/core/types.d.ts +20 -0
  6. package/lib/cjs/packages/js/src/core/types.js +3 -0
  7. package/lib/cjs/packages/js/src/core/types.js.map +1 -0
  8. package/lib/cjs/{data → packages/js/src/data}/dictionary.d.ts +1 -0
  9. package/lib/cjs/packages/js/src/data/dictionary.js +54 -0
  10. package/lib/cjs/packages/js/src/data/dictionary.js.map +1 -0
  11. package/lib/cjs/{filters → packages/js/src/filters}/Filter.d.ts +13 -14
  12. package/lib/cjs/packages/js/src/filters/Filter.js +246 -0
  13. package/lib/cjs/packages/js/src/filters/Filter.js.map +1 -0
  14. package/lib/cjs/packages/js/src/hooks/useProfanityChecker.d.ts +11 -0
  15. package/lib/cjs/packages/js/src/hooks/useProfanityChecker.js +42 -0
  16. package/lib/cjs/packages/js/src/hooks/useProfanityChecker.js.map +1 -0
  17. package/lib/cjs/packages/js/src/index.d.ts +12 -0
  18. package/lib/cjs/packages/js/src/index.js +24 -0
  19. package/lib/cjs/packages/js/src/index.js.map +1 -0
  20. package/lib/cjs/packages/js/src/nlp/contextAnalyzer.d.ts +35 -0
  21. package/lib/cjs/packages/js/src/nlp/contextAnalyzer.js +203 -0
  22. package/lib/cjs/packages/js/src/nlp/contextAnalyzer.js.map +1 -0
  23. package/lib/cjs/packages/js/src/types/types.d.ts +56 -0
  24. package/lib/cjs/packages/js/src/types/types.js +14 -0
  25. package/lib/cjs/packages/js/src/types/types.js.map +1 -0
  26. package/lib/cjs/shared/dictionaries/spanish.json +72 -0
  27. package/lib/esm/packages/js/src/core/index.d.ts +4 -0
  28. package/lib/esm/packages/js/src/core/index.js +47 -0
  29. package/lib/esm/packages/js/src/core/index.js.map +1 -0
  30. package/lib/esm/packages/js/src/core/types.d.ts +20 -0
  31. package/lib/esm/packages/js/src/core/types.js +2 -0
  32. package/lib/esm/packages/js/src/core/types.js.map +1 -0
  33. package/lib/esm/{data → packages/js/src/data}/dictionary.d.ts +1 -0
  34. package/lib/esm/packages/js/src/data/dictionary.js +49 -0
  35. package/lib/esm/packages/js/src/data/dictionary.js.map +1 -0
  36. package/lib/esm/{filters → packages/js/src/filters}/Filter.d.ts +13 -14
  37. package/lib/esm/packages/js/src/filters/Filter.js +240 -0
  38. package/lib/esm/packages/js/src/filters/Filter.js.map +1 -0
  39. package/lib/esm/packages/js/src/hooks/useProfanityChecker.d.ts +11 -0
  40. package/lib/esm/packages/js/src/hooks/useProfanityChecker.js +38 -0
  41. package/lib/esm/packages/js/src/hooks/useProfanityChecker.js.map +1 -0
  42. package/lib/esm/packages/js/src/index.d.ts +12 -0
  43. package/lib/esm/packages/js/src/index.js +15 -0
  44. package/lib/esm/packages/js/src/index.js.map +1 -0
  45. package/lib/esm/packages/js/src/nlp/contextAnalyzer.d.ts +35 -0
  46. package/lib/esm/packages/js/src/nlp/contextAnalyzer.js +199 -0
  47. package/lib/esm/packages/js/src/nlp/contextAnalyzer.js.map +1 -0
  48. package/lib/esm/packages/js/src/types/types.d.ts +56 -0
  49. package/lib/esm/packages/js/src/types/types.js +11 -0
  50. package/lib/esm/packages/js/src/types/types.js.map +1 -0
  51. package/lib/esm/shared/dictionaries/spanish.json +72 -0
  52. package/package.json +26 -3
  53. package/lib/cjs/data/dictionary.js +0 -52
  54. package/lib/cjs/data/dictionary.js.map +0 -1
  55. package/lib/cjs/filters/Filter.js +0 -137
  56. package/lib/cjs/filters/Filter.js.map +0 -1
  57. package/lib/cjs/hooks/useProfanityChecker.d.ts +0 -20
  58. package/lib/cjs/hooks/useProfanityChecker.js +0 -58
  59. package/lib/cjs/hooks/useProfanityChecker.js.map +0 -1
  60. package/lib/cjs/index.d.ts +0 -3
  61. package/lib/cjs/index.js +0 -8
  62. package/lib/cjs/index.js.map +0 -1
  63. package/lib/cjs/types/types.d.ts +0 -14
  64. package/lib/cjs/types/types.js +0 -11
  65. package/lib/cjs/types/types.js.map +0 -1
  66. package/lib/esm/data/dictionary.js +0 -47
  67. package/lib/esm/data/dictionary.js.map +0 -1
  68. package/lib/esm/filters/Filter.js +0 -131
  69. package/lib/esm/filters/Filter.js.map +0 -1
  70. package/lib/esm/hooks/useProfanityChecker.d.ts +0 -20
  71. package/lib/esm/hooks/useProfanityChecker.js +0 -51
  72. package/lib/esm/hooks/useProfanityChecker.js.map +0 -1
  73. package/lib/esm/index.d.ts +0 -3
  74. package/lib/esm/index.js +0 -3
  75. package/lib/esm/index.js.map +0 -1
  76. package/lib/esm/types/types.d.ts +0 -14
  77. package/lib/esm/types/types.js +0 -8
  78. package/lib/esm/types/types.js.map +0 -1
  79. /package/lib/cjs/{data → shared/dictionaries}/Norwegian.json +0 -0
  80. /package/lib/cjs/{data → shared/dictionaries}/arabic.json +0 -0
  81. /package/lib/cjs/{data → shared/dictionaries}/chinese.json +0 -0
  82. /package/lib/cjs/{data → shared/dictionaries}/czech.json +0 -0
  83. /package/lib/cjs/{data → shared/dictionaries}/danish.json +0 -0
  84. /package/lib/cjs/{data → shared/dictionaries}/english.json +0 -0
  85. /package/lib/cjs/{data → shared/dictionaries}/esperanto.json +0 -0
  86. /package/lib/cjs/{data → shared/dictionaries}/finnish.json +0 -0
  87. /package/lib/cjs/{data → shared/dictionaries}/french.json +0 -0
  88. /package/lib/cjs/{data → shared/dictionaries}/german.json +0 -0
  89. /package/lib/cjs/{data → shared/dictionaries}/globalWhitelist.json +0 -0
  90. /package/lib/cjs/{data → shared/dictionaries}/hindi.json +0 -0
  91. /package/lib/cjs/{data → shared/dictionaries}/hungarian.json +0 -0
  92. /package/lib/cjs/{data → shared/dictionaries}/italian.json +0 -0
  93. /package/lib/cjs/{data → shared/dictionaries}/japanese.json +0 -0
  94. /package/lib/cjs/{data → shared/dictionaries}/korean.json +0 -0
  95. /package/lib/cjs/{data → shared/dictionaries}/persian.json +0 -0
  96. /package/lib/cjs/{data → shared/dictionaries}/polish.json +0 -0
  97. /package/lib/cjs/{data → shared/dictionaries}/portuguese.json +0 -0
  98. /package/lib/cjs/{data → shared/dictionaries}/russian.json +0 -0
  99. /package/lib/cjs/{data → shared/dictionaries}/swedish.json +0 -0
  100. /package/lib/cjs/{data → shared/dictionaries}/thai.json +0 -0
  101. /package/lib/cjs/{data → shared/dictionaries}/turkish.json +0 -0
  102. /package/lib/esm/{data → shared/dictionaries}/Norwegian.json +0 -0
  103. /package/lib/esm/{data → shared/dictionaries}/arabic.json +0 -0
  104. /package/lib/esm/{data → shared/dictionaries}/chinese.json +0 -0
  105. /package/lib/esm/{data → shared/dictionaries}/czech.json +0 -0
  106. /package/lib/esm/{data → shared/dictionaries}/danish.json +0 -0
  107. /package/lib/esm/{data → shared/dictionaries}/english.json +0 -0
  108. /package/lib/esm/{data → shared/dictionaries}/esperanto.json +0 -0
  109. /package/lib/esm/{data → shared/dictionaries}/finnish.json +0 -0
  110. /package/lib/esm/{data → shared/dictionaries}/french.json +0 -0
  111. /package/lib/esm/{data → shared/dictionaries}/german.json +0 -0
  112. /package/lib/esm/{data → shared/dictionaries}/globalWhitelist.json +0 -0
  113. /package/lib/esm/{data → shared/dictionaries}/hindi.json +0 -0
  114. /package/lib/esm/{data → shared/dictionaries}/hungarian.json +0 -0
  115. /package/lib/esm/{data → shared/dictionaries}/italian.json +0 -0
  116. /package/lib/esm/{data → shared/dictionaries}/japanese.json +0 -0
  117. /package/lib/esm/{data → shared/dictionaries}/korean.json +0 -0
  118. /package/lib/esm/{data → shared/dictionaries}/persian.json +0 -0
  119. /package/lib/esm/{data → shared/dictionaries}/polish.json +0 -0
  120. /package/lib/esm/{data → shared/dictionaries}/portuguese.json +0 -0
  121. /package/lib/esm/{data → shared/dictionaries}/russian.json +0 -0
  122. /package/lib/esm/{data → shared/dictionaries}/swedish.json +0 -0
  123. /package/lib/esm/{data → shared/dictionaries}/thai.json +0 -0
  124. /package/lib/esm/{data → shared/dictionaries}/turkish.json +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextAnalyzer.js","sourceRoot":"","sources":["../../../../../../src/nlp/contextAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Type definitions for glin-profanity JavaScript/TypeScript package.
3
+ * Unified API that mirrors the Python package structure.
4
+ */
5
+ /** Severity levels for profanity matches - unified with Python */
6
+ export declare enum SeverityLevel {
7
+ EXACT = 1,
8
+ FUZZY = 2
9
+ }
10
+ /** Supported languages - unified list with Python */
11
+ export type Language = 'arabic' | 'chinese' | 'czech' | 'danish' | 'english' | 'esperanto' | 'finnish' | 'french' | 'german' | 'hindi' | 'hungarian' | 'italian' | 'japanese' | 'korean' | 'norwegian' | 'persian' | 'polish' | 'portuguese' | 'russian' | 'spanish' | 'swedish' | 'thai' | 'turkish';
12
+ /** Represents a profanity match in text - unified with Python */
13
+ export interface Match {
14
+ word: string;
15
+ index: number;
16
+ severity: SeverityLevel;
17
+ contextScore?: number;
18
+ reason?: string;
19
+ isWhitelisted?: boolean;
20
+ }
21
+ /** Result of profanity check operation - unified field names */
22
+ export interface CheckProfanityResult {
23
+ containsProfanity: boolean;
24
+ profaneWords: string[];
25
+ processedText?: string;
26
+ severityMap?: Record<string, SeverityLevel>;
27
+ matches?: Match[];
28
+ contextScore?: number;
29
+ reason?: string;
30
+ }
31
+ /** Configuration for context-aware filtering - unified with Python */
32
+ export interface ContextAwareConfig {
33
+ enableContextAware?: boolean;
34
+ contextWindow?: number;
35
+ confidenceThreshold?: number;
36
+ domainWhitelists?: Record<string, string[]>;
37
+ }
38
+ /** Main filter configuration options - unified with Python */
39
+ export interface FilterConfig extends ContextAwareConfig {
40
+ languages?: Language[];
41
+ allLanguages?: boolean;
42
+ caseSensitive?: boolean;
43
+ wordBoundaries?: boolean;
44
+ customWords?: string[];
45
+ replaceWith?: string;
46
+ severityLevels?: boolean;
47
+ ignoreWords?: string[];
48
+ logProfanity?: boolean;
49
+ allowObfuscatedMatch?: boolean;
50
+ fuzzyToleranceLevel?: number;
51
+ }
52
+ /** Result with minimum severity filtering */
53
+ export interface FilteredProfanityResult {
54
+ result: CheckProfanityResult;
55
+ filteredWords: string[];
56
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * Type definitions for glin-profanity JavaScript/TypeScript package.
4
+ * Unified API that mirrors the Python package structure.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SeverityLevel = void 0;
8
+ /** Severity levels for profanity matches - unified with Python */
9
+ var SeverityLevel;
10
+ (function (SeverityLevel) {
11
+ SeverityLevel[SeverityLevel["EXACT"] = 1] = "EXACT";
12
+ SeverityLevel[SeverityLevel["FUZZY"] = 2] = "FUZZY";
13
+ })(SeverityLevel || (exports.SeverityLevel = SeverityLevel = {}));
14
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/types/types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,kEAAkE;AAClE,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,mDAAS,CAAA;IACT,mDAAS,CAAA;AACX,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB"}
@@ -0,0 +1,72 @@
1
+ {
2
+ "words": [
3
+ "sesinato",
4
+ "asno",
5
+ "bastardo",
6
+ "Bollera",
7
+ "Cabron",
8
+ "Cabrón",
9
+ "Caca",
10
+ "Chupada",
11
+ "Chupapollas",
12
+ "Chupetón",
13
+ "concha",
14
+ "Concha de tu madre",
15
+ "Coño",
16
+ "Coprofagía",
17
+ "Culo",
18
+ "Drogas",
19
+ "Esperma",
20
+ "Fiesta de salchichas",
21
+ "Follador",
22
+ "Follar",
23
+ "Gilipichis",
24
+ "Gilipollas",
25
+ "Hacer una paja",
26
+ "Haciendo el amor",
27
+ "Heroína",
28
+ "Hija de puta",
29
+ "Hijaputa",
30
+ "Hijo de puta",
31
+ "Hijoputa",
32
+ "Idiota",
33
+ "Imbécil",
34
+ "infierno",
35
+ "Jilipollas",
36
+ "Kapullo",
37
+ "Lameculos",
38
+ "Maciza",
39
+ "Macizorra",
40
+ "maldito",
41
+ "Mamada",
42
+ "Marica",
43
+ "Maricón",
44
+ "Mariconazo",
45
+ "martillo",
46
+ "Mierda",
47
+ "Nazi",
48
+ "Orina",
49
+ "Pedo",
50
+ "Pervertido",
51
+ "Pezón",
52
+ "Pinche",
53
+ "Pis",
54
+ "Prostituta",
55
+ "Puta",
56
+ "Racista",
57
+ "Ramera",
58
+ "Sádico",
59
+ "Semen",
60
+ "Sexo",
61
+ "Sexo oral",
62
+ "Soplagaitas",
63
+ "Soplapollas",
64
+ "Tetas grandes",
65
+ "Tía buena",
66
+ "Travesti",
67
+ "Trio",
68
+ "Verga",
69
+ "vete a la mierda",
70
+ "Vulva"
71
+ ]
72
+ }
@@ -0,0 +1,4 @@
1
+ import { ProfanityCheckerConfig, ProfanityCheckResult } from './types';
2
+ export declare function checkProfanity(text: string, config?: ProfanityCheckerConfig): ProfanityCheckResult;
3
+ export declare function checkProfanityAsync(text: string, config?: ProfanityCheckerConfig): Promise<ProfanityCheckResult>;
4
+ export declare function isWordProfane(word: string, config?: ProfanityCheckerConfig): boolean;
@@ -0,0 +1,47 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { Filter } from '../filters/Filter';
11
+ import globalWhitelistData from '@shared/dictionaries/globalWhitelist.json';
12
+ function createFilterConfig(config) {
13
+ var _a;
14
+ const effective = Object.assign(Object.assign({}, (config !== null && config !== void 0 ? config : {})), { ignoreWords: globalWhitelistData.whitelist, fuzzyToleranceLevel: (_a = config === null || config === void 0 ? void 0 : config.fuzzyToleranceLevel) !== null && _a !== void 0 ? _a : 0.8 });
15
+ if (effective.allowObfuscatedMatch && effective.wordBoundaries) {
16
+ console.warn('[Glin-Profanity] Obfuscated match enabled → wordBoundaries will be ignored internally.');
17
+ }
18
+ return effective;
19
+ }
20
+ export function checkProfanity(text, config) {
21
+ var _a;
22
+ const filterConfig = createFilterConfig(config);
23
+ const filter = new Filter(filterConfig);
24
+ const checkResult = filter.checkProfanity(text);
25
+ // Filter based on minSeverity (if provided)
26
+ const filteredWords = (config === null || config === void 0 ? void 0 : config.minSeverity) && checkResult.severityMap
27
+ ? checkResult.profaneWords.filter((word) => checkResult.severityMap &&
28
+ checkResult.severityMap[word] >= config.minSeverity)
29
+ : checkResult.profaneWords;
30
+ // Optional auto-replace
31
+ const autoReplaced = (config === null || config === void 0 ? void 0 : config.autoReplace) && checkResult.processedText
32
+ ? checkResult.processedText
33
+ : text;
34
+ // Custom actions
35
+ (_a = config === null || config === void 0 ? void 0 : config.customActions) === null || _a === void 0 ? void 0 : _a.call(config, checkResult);
36
+ return Object.assign(Object.assign({}, checkResult), { filteredWords,
37
+ autoReplaced });
38
+ }
39
+ export function checkProfanityAsync(text, config) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ return Promise.resolve(checkProfanity(text, config));
42
+ });
43
+ }
44
+ export function isWordProfane(word, config) {
45
+ return checkProfanity(word, config).containsProfanity;
46
+ }
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAgB,MAAM,mBAAmB,CAAC;AAEzD,OAAO,mBAAmB,MAAM,2CAA2C,CAAC;AAE5E,SAAS,kBAAkB,CAAC,MAA+B;;IACzD,MAAM,SAAS,mCACV,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC,KACjB,WAAW,EAAG,mBAA2B,CAAC,SAAS,EACnD,mBAAmB,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,mBAAmB,mCAAI,GAAG,GACxD,CAAC;IAEF,IAAI,SAAS,CAAC,oBAAoB,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;QAC/D,OAAO,CAAC,IAAI,CACV,wFAAwF,CACzF,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAA+B;;IAC1E,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAEhD,4CAA4C;IAC5C,MAAM,aAAa,GACjB,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,KAAI,WAAW,CAAC,WAAW;QAC5C,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAC7B,CAAC,IAAI,EAAE,EAAE,CACP,WAAW,CAAC,WAAW;YACvB,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,WAAY,CACvD;QACH,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC;IAE/B,wBAAwB;IACxB,MAAM,YAAY,GAChB,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,KAAI,WAAW,CAAC,aAAa;QAC9C,CAAC,CAAC,WAAW,CAAC,aAAa;QAC3B,CAAC,CAAC,IAAI,CAAC;IAEX,iBAAiB;IACjB,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,uDAAG,WAAW,CAAC,CAAC;IAErC,uCACK,WAAW,KACd,aAAa;QACb,YAAY,IACZ;AACJ,CAAC;AAED,MAAM,UAAgB,mBAAmB,CAAC,IAAY,EAAE,MAA+B;;QACrF,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;CAAA;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,MAA+B;IACzE,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,iBAAiB,CAAC;AACxD,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { CheckProfanityResult, Language, SeverityLevel } from '../types/types';
2
+ export interface ProfanityCheckerConfig {
3
+ languages?: Language[];
4
+ allLanguages?: boolean;
5
+ caseSensitive?: boolean;
6
+ wordBoundaries?: boolean;
7
+ customWords?: string[];
8
+ replaceWith?: string;
9
+ severityLevels?: boolean;
10
+ allowObfuscatedMatch?: boolean;
11
+ fuzzyToleranceLevel?: number;
12
+ minSeverity?: SeverityLevel;
13
+ autoReplace?: boolean;
14
+ customActions?: (result: CheckProfanityResult) => void;
15
+ }
16
+ export interface ProfanityCheckResult extends CheckProfanityResult {
17
+ filteredWords: string[];
18
+ autoReplaced: string;
19
+ }
20
+ export type { CheckProfanityResult, Language, SeverityLevel, FilterConfig } from '../types/types';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/core/types.ts"],"names":[],"mappings":""}
@@ -18,6 +18,7 @@ declare const _default: {
18
18
  polish: string[];
19
19
  portuguese: string[];
20
20
  russian: string[];
21
+ spanish: string[];
21
22
  turkish: string[];
22
23
  swedish: string[];
23
24
  thai: string[];
@@ -0,0 +1,49 @@
1
+ import Arabic from '@shared/dictionaries/arabic.json';
2
+ import Chinese from '@shared/dictionaries/chinese.json';
3
+ import Czech from '@shared/dictionaries/czech.json';
4
+ import Danish from '@shared/dictionaries/danish.json';
5
+ import Esperanto from '@shared/dictionaries/esperanto.json';
6
+ import English from '@shared/dictionaries/english.json';
7
+ import Finnish from '@shared/dictionaries/finnish.json';
8
+ import German from '@shared/dictionaries/german.json';
9
+ import Hindi from '@shared/dictionaries/hindi.json';
10
+ import Hungarian from '@shared/dictionaries/hungarian.json';
11
+ import Korean from '@shared/dictionaries/korean.json';
12
+ import Norwegian from '@shared/dictionaries/Norwegian.json';
13
+ import Persian from '@shared/dictionaries/persian.json';
14
+ import Polish from '@shared/dictionaries/polish.json';
15
+ import Portuguese from '@shared/dictionaries/portuguese.json';
16
+ import Russian from '@shared/dictionaries/russian.json';
17
+ import French from '@shared/dictionaries/french.json';
18
+ import Italian from '@shared/dictionaries/italian.json';
19
+ import Japanese from '@shared/dictionaries/japanese.json';
20
+ import Turkish from '@shared/dictionaries/turkish.json';
21
+ import Spanish from '@shared/dictionaries/spanish.json';
22
+ import Swedish from '@shared/dictionaries/swedish.json';
23
+ import Thai from '@shared/dictionaries/thai.json';
24
+ export default {
25
+ arabic: Arabic.words,
26
+ chinese: Chinese.words,
27
+ czech: Czech.words,
28
+ danish: Danish.words,
29
+ english: English.words,
30
+ esperanto: Esperanto.words,
31
+ finnish: Finnish.words,
32
+ french: French.words,
33
+ german: German.words,
34
+ hindi: Hindi.words,
35
+ hungarian: Hungarian.words,
36
+ italian: Italian.words,
37
+ japanese: Japanese.words,
38
+ korean: Korean.words,
39
+ norwegian: Norwegian.words,
40
+ persian: Persian.words,
41
+ polish: Polish.words,
42
+ portuguese: Portuguese.words,
43
+ russian: Russian.words,
44
+ spanish: Spanish.words,
45
+ turkish: Turkish.words,
46
+ swedish: Swedish.words,
47
+ thai: Thai.words,
48
+ };
49
+ //# sourceMappingURL=dictionary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dictionary.js","sourceRoot":"","sources":["../../../../../../src/data/dictionary.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,kCAAkC,CAAC;AACtD,OAAO,OAAO,MAAM,mCAAmC,CAAC;AACxD,OAAO,KAAK,MAAM,iCAAiC,CAAC;AACpD,OAAO,MAAM,MAAM,kCAAkC,CAAC;AACtD,OAAO,SAAS,MAAM,qCAAqC,CAAC;AAC5D,OAAO,OAAO,MAAM,mCAAmC,CAAC;AACxD,OAAO,OAAO,MAAM,mCAAmC,CAAC;AACxD,OAAO,MAAM,MAAM,kCAAkC,CAAC;AACtD,OAAO,KAAK,MAAM,iCAAiC,CAAC;AACpD,OAAO,SAAS,MAAM,qCAAqC,CAAC;AAC5D,OAAO,MAAM,MAAM,kCAAkC,CAAC;AACtD,OAAO,SAAS,MAAM,qCAAqC,CAAC;AAC5D,OAAO,OAAO,MAAM,mCAAmC,CAAC;AACxD,OAAO,MAAM,MAAM,kCAAkC,CAAC;AACtD,OAAO,UAAU,MAAM,sCAAsC,CAAC;AAC9D,OAAO,OAAO,MAAM,mCAAmC,CAAC;AACxD,OAAO,MAAM,MAAM,kCAAkC,CAAC;AACtD,OAAO,OAAO,MAAM,mCAAmC,CAAC;AACxD,OAAO,QAAQ,MAAM,oCAAoC,CAAC;AAC1D,OAAO,OAAO,MAAM,mCAAmC,CAAC;AACxD,OAAO,OAAO,MAAM,mCAAmC,CAAC;AACxD,OAAO,OAAO,MAAM,mCAAmC,CAAC;AACxD,OAAO,IAAI,MAAM,gCAAgC,CAAC;AAClD,eAAe;IACb,MAAM,EAAE,MAAM,CAAC,KAAK;IACpB,OAAO,EAAE,OAAO,CAAC,KAAK;IACtB,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,MAAM,EAAE,MAAM,CAAC,KAAK;IACpB,OAAO,EAAE,OAAO,CAAC,KAAK;IACtB,SAAS,EAAE,SAAS,CAAC,KAAK;IAC1B,OAAO,EAAE,OAAO,CAAC,KAAK;IACtB,MAAM,EAAE,MAAM,CAAC,KAAK;IACpB,MAAM,EAAE,MAAM,CAAC,KAAK;IACpB,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,SAAS,EAAE,SAAS,CAAC,KAAK;IAC1B,OAAO,EAAE,OAAO,CAAC,KAAK;IACtB,QAAQ,EAAE,QAAQ,CAAC,KAAK;IACxB,MAAM,EAAE,MAAM,CAAC,KAAK;IACpB,SAAS,EAAE,SAAS,CAAC,KAAK;IAC1B,OAAO,EAAE,OAAO,CAAC,KAAK;IACtB,MAAM,EAAE,MAAM,CAAC,KAAK;IACpB,UAAU,EAAE,UAAU,CAAC,KAAK;IAC5B,OAAO,EAAE,OAAO,CAAC,KAAK;IACtB,OAAO,EAAE,OAAO,CAAC,KAAK;IACtB,OAAO,EAAE,OAAO,CAAC,KAAK;IACtB,OAAO,EAAE,OAAO,CAAC,KAAK;IACtB,IAAI,EAAE,IAAI,CAAC,KAAK;CACjB,CAAC"}
@@ -1,17 +1,5 @@
1
- import { Language, CheckProfanityResult } from '../types/types';
2
- interface FilterConfig {
3
- languages?: Language[];
4
- allLanguages?: boolean;
5
- caseSensitive?: boolean;
6
- wordBoundaries?: boolean;
7
- customWords?: string[];
8
- replaceWith?: string;
9
- severityLevels?: boolean;
10
- ignoreWords?: string[];
11
- logProfanity?: boolean;
12
- allowObfuscatedMatch?: boolean;
13
- fuzzyToleranceLevel?: number;
14
- }
1
+ import { CheckProfanityResult, SeverityLevel, FilterConfig } from '../types/types';
2
+ export type { FilterConfig };
15
3
  declare class Filter {
16
4
  private words;
17
5
  private caseSensitive;
@@ -22,12 +10,23 @@ declare class Filter {
22
10
  private logProfanity;
23
11
  private allowObfuscatedMatch;
24
12
  private fuzzyToleranceLevel;
13
+ private enableContextAware;
14
+ private contextWindow;
15
+ private confidenceThreshold;
16
+ private contextAnalyzer?;
17
+ private primaryLanguage;
25
18
  constructor(config?: FilterConfig);
19
+ private debugLog;
26
20
  private normalizeObfuscated;
27
21
  private getRegex;
28
22
  private isFuzzyToleranceMatch;
29
23
  private evaluateSeverity;
30
24
  isProfane(value: string): boolean;
25
+ matches(word: string): boolean;
31
26
  checkProfanity(text: string): CheckProfanityResult;
27
+ checkProfanityWithMinSeverity(text: string, minSeverity?: SeverityLevel): {
28
+ filteredWords: string[];
29
+ result: CheckProfanityResult;
30
+ };
32
31
  }
33
32
  export { Filter };
@@ -0,0 +1,240 @@
1
+ import dictionary from '../data/dictionary';
2
+ import { SeverityLevel } from '../types/types';
3
+ import { ContextAnalyzer } from '../nlp/contextAnalyzer';
4
+ class Filter {
5
+ constructor(config) {
6
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
7
+ const defaultLanguage = 'english';
8
+ this.enableContextAware = (_a = config === null || config === void 0 ? void 0 : config.enableContextAware) !== null && _a !== void 0 ? _a : false;
9
+ this.contextWindow = (_b = config === null || config === void 0 ? void 0 : config.contextWindow) !== null && _b !== void 0 ? _b : 3;
10
+ this.confidenceThreshold = (_c = config === null || config === void 0 ? void 0 : config.confidenceThreshold) !== null && _c !== void 0 ? _c : 0.7;
11
+ this.primaryLanguage = ((_d = config === null || config === void 0 ? void 0 : config.languages) === null || _d === void 0 ? void 0 : _d[0]) || defaultLanguage;
12
+ if (this.enableContextAware) {
13
+ this.contextAnalyzer = new ContextAnalyzer({
14
+ contextWindow: this.contextWindow,
15
+ language: this.primaryLanguage,
16
+ domainWhitelists: ((_e = config === null || config === void 0 ? void 0 : config.domainWhitelists) === null || _e === void 0 ? void 0 : _e[this.primaryLanguage]) || []
17
+ });
18
+ }
19
+ let words = [];
20
+ this.caseSensitive = (_f = config === null || config === void 0 ? void 0 : config.caseSensitive) !== null && _f !== void 0 ? _f : false;
21
+ this.allowObfuscatedMatch = (_g = config === null || config === void 0 ? void 0 : config.allowObfuscatedMatch) !== null && _g !== void 0 ? _g : false;
22
+ this.wordBoundaries = (_h = config === null || config === void 0 ? void 0 : config.wordBoundaries) !== null && _h !== void 0 ? _h : !this.allowObfuscatedMatch;
23
+ this.replaceWith = config === null || config === void 0 ? void 0 : config.replaceWith;
24
+ this.severityLevels = (_j = config === null || config === void 0 ? void 0 : config.severityLevels) !== null && _j !== void 0 ? _j : false;
25
+ this.ignoreWords = new Set(((_k = config === null || config === void 0 ? void 0 : config.ignoreWords) === null || _k === void 0 ? void 0 : _k.map((word) => word.toLowerCase())) || []);
26
+ this.logProfanity = (_l = config === null || config === void 0 ? void 0 : config.logProfanity) !== null && _l !== void 0 ? _l : false;
27
+ this.fuzzyToleranceLevel = (_m = config === null || config === void 0 ? void 0 : config.fuzzyToleranceLevel) !== null && _m !== void 0 ? _m : 0.8;
28
+ if (config === null || config === void 0 ? void 0 : config.allLanguages) {
29
+ for (const lang in dictionary) {
30
+ if (dictionary.hasOwnProperty(lang)) {
31
+ words = [...words, ...dictionary[lang]];
32
+ }
33
+ }
34
+ }
35
+ else {
36
+ const languages = (config === null || config === void 0 ? void 0 : config.languages) || ['english'];
37
+ const languagesChecks = new Set(languages);
38
+ languagesChecks.forEach((lang) => {
39
+ words = [...words, ...dictionary[lang]];
40
+ });
41
+ }
42
+ if (config === null || config === void 0 ? void 0 : config.customWords) {
43
+ words = [...words, ...config.customWords];
44
+ }
45
+ this.words = new Map(words.map((word) => [word.toLowerCase(), 1]));
46
+ }
47
+ debugLog(...args) {
48
+ if (this.logProfanity) {
49
+ console.log('[glin-profanity]', ...args);
50
+ }
51
+ }
52
+ normalizeObfuscated(text) {
53
+ let normalized = text.replace(/([a-zA-Z])\1{1,}/g, '$1$1');
54
+ const charMap = {
55
+ '@': 'a',
56
+ $: 's',
57
+ '!': 'i',
58
+ '1': 'i',
59
+ '*': '',
60
+ };
61
+ normalized = normalized.replace(/[@$!1*]/g, (m) => charMap[m] || m);
62
+ return normalized;
63
+ }
64
+ getRegex(word) {
65
+ const flags = this.caseSensitive ? 'g' : 'gi';
66
+ const escapedWord = word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
67
+ const boundary = this.wordBoundaries ? '\\b' : '';
68
+ return new RegExp(`${boundary}${escapedWord}${boundary}`, flags);
69
+ }
70
+ isFuzzyToleranceMatch(word, text) {
71
+ const simplifiedText = text.toLowerCase().replace(/[^a-z]/g, '');
72
+ const simplifiedWord = word.toLowerCase();
73
+ let matchCount = 0;
74
+ let index = 0;
75
+ for (let i = 0; i < simplifiedText.length; i++) {
76
+ if (simplifiedText[i] === simplifiedWord[index]) {
77
+ matchCount++;
78
+ index++;
79
+ if (index === simplifiedWord.length)
80
+ break;
81
+ }
82
+ }
83
+ const score = matchCount / simplifiedWord.length;
84
+ return score >= this.fuzzyToleranceLevel;
85
+ }
86
+ evaluateSeverity(word, text) {
87
+ if (this.wordBoundaries && this.getRegex(word).test(text)) {
88
+ return SeverityLevel.EXACT;
89
+ }
90
+ if (this.getRegex(word).test(text))
91
+ return SeverityLevel.EXACT;
92
+ if (this.isFuzzyToleranceMatch(word, text))
93
+ return SeverityLevel.FUZZY;
94
+ return undefined;
95
+ }
96
+ isProfane(value) {
97
+ let input = this.allowObfuscatedMatch
98
+ ? this.normalizeObfuscated(value)
99
+ : value;
100
+ for (const word of this.words.keys()) {
101
+ if (!this.ignoreWords.has(word.toLowerCase()) &&
102
+ this.evaluateSeverity(word, input) !== undefined) {
103
+ return true;
104
+ }
105
+ }
106
+ return false;
107
+ }
108
+ matches(word) {
109
+ return this.isProfane(word);
110
+ }
111
+ checkProfanity(text) {
112
+ // Backward compatibility: if not context-aware, run old logic
113
+ if (!this.enableContextAware) {
114
+ let input = this.allowObfuscatedMatch
115
+ ? this.normalizeObfuscated(text)
116
+ : text;
117
+ input = input.toLowerCase();
118
+ const profaneWords = [];
119
+ const severityMap = {};
120
+ for (const dictWord of this.words.keys()) {
121
+ if (this.ignoreWords.has(dictWord.toLowerCase()))
122
+ continue;
123
+ const severity = this.evaluateSeverity(dictWord, input);
124
+ if (severity !== undefined) {
125
+ const regex = this.getRegex(dictWord);
126
+ let match;
127
+ while ((match = regex.exec(input)) !== null) {
128
+ profaneWords.push(match[0]);
129
+ if (severityMap[match[0]] === undefined) {
130
+ severityMap[match[0]] = severity;
131
+ }
132
+ }
133
+ }
134
+ }
135
+ let processedText = text;
136
+ if (this.replaceWith && profaneWords.length > 0) {
137
+ const uniqueWords = Array.from(new Set(profaneWords));
138
+ for (const word of uniqueWords) {
139
+ const escaped = word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
140
+ const replacementRegex = this.wordBoundaries
141
+ ? new RegExp(`\\b${escaped}\\b`, 'gi')
142
+ : new RegExp(escaped, 'gi');
143
+ processedText = processedText.replace(replacementRegex, this.replaceWith);
144
+ }
145
+ }
146
+ return {
147
+ containsProfanity: profaneWords.length > 0,
148
+ profaneWords: Array.from(new Set(profaneWords)),
149
+ processedText: this.replaceWith ? processedText : undefined,
150
+ severityMap: this.severityLevels && Object.keys(severityMap).length > 0
151
+ ? severityMap
152
+ : undefined,
153
+ };
154
+ }
155
+ // Context-aware path
156
+ let input = this.allowObfuscatedMatch
157
+ ? this.normalizeObfuscated(text)
158
+ : text;
159
+ input = input.toLowerCase();
160
+ const originalText = text;
161
+ const profaneWords = [];
162
+ const severityMap = {};
163
+ const matches = [];
164
+ for (const dictWord of this.words.keys()) {
165
+ if (this.ignoreWords.has(dictWord.toLowerCase()))
166
+ continue;
167
+ const severity = this.evaluateSeverity(dictWord, input);
168
+ if (severity !== undefined) {
169
+ const regex = this.getRegex(dictWord);
170
+ let match;
171
+ while ((match = regex.exec(input)) !== null) {
172
+ const matchedWord = match[0];
173
+ const matchIndex = match.index;
174
+ const matchObj = {
175
+ word: matchedWord,
176
+ index: matchIndex,
177
+ severity: severity
178
+ };
179
+ if (this.enableContextAware && this.contextAnalyzer) {
180
+ const contextResult = this.contextAnalyzer.analyzeContext(originalText, matchedWord, matchIndex);
181
+ matchObj.contextScore = contextResult.contextScore;
182
+ matchObj.reason = contextResult.reason;
183
+ matchObj.isWhitelisted = contextResult.isWhitelisted;
184
+ if (contextResult.isWhitelisted || (contextResult.contextScore > this.confidenceThreshold)) {
185
+ continue;
186
+ }
187
+ }
188
+ profaneWords.push(matchedWord);
189
+ if (severityMap[matchedWord] === undefined) {
190
+ severityMap[matchedWord] = severity;
191
+ }
192
+ matches.push(matchObj);
193
+ }
194
+ }
195
+ }
196
+ if (profaneWords.length > 0) {
197
+ this.debugLog('Detected:', profaneWords);
198
+ }
199
+ let processedText = text;
200
+ if (this.replaceWith && profaneWords.length > 0) {
201
+ const uniqueWords = Array.from(new Set(profaneWords));
202
+ for (const word of uniqueWords) {
203
+ const escaped = word.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
204
+ const replacementRegex = this.wordBoundaries
205
+ ? new RegExp(`\\b${escaped}\\b`, 'gi')
206
+ : new RegExp(escaped, 'gi');
207
+ processedText = processedText.replace(replacementRegex, this.replaceWith);
208
+ }
209
+ }
210
+ let contextScore;
211
+ if (this.enableContextAware && matches.length > 0) {
212
+ const totalScore = matches.reduce((sum, match) => sum + (match.contextScore || 0.5), 0);
213
+ contextScore = totalScore / matches.length;
214
+ }
215
+ return {
216
+ containsProfanity: profaneWords.length > 0,
217
+ profaneWords: Array.from(new Set(profaneWords)),
218
+ processedText: this.replaceWith ? processedText : undefined,
219
+ severityMap: this.severityLevels && Object.keys(severityMap).length > 0 ? severityMap : undefined,
220
+ matches: matches.length > 0 ? matches : undefined,
221
+ contextScore,
222
+ reason: matches.length > 0 ?
223
+ `Found ${matches.length} potential profanity matches` :
224
+ 'No profanity detected'
225
+ };
226
+ }
227
+ checkProfanityWithMinSeverity(text, minSeverity = SeverityLevel.EXACT) {
228
+ const result = this.checkProfanity(text);
229
+ const filteredWords = result.severityMap && result.profaneWords.length > 0
230
+ ? result.profaneWords.filter((word) => {
231
+ var _a;
232
+ const severity = (_a = result.severityMap) === null || _a === void 0 ? void 0 : _a[word];
233
+ return typeof severity === 'number' && severity >= minSeverity;
234
+ })
235
+ : [];
236
+ return { filteredWords, result };
237
+ }
238
+ }
239
+ export { Filter };
240
+ //# sourceMappingURL=Filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filter.js","sourceRoot":"","sources":["../../../../../../src/filters/Filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ProfanityCheckerConfig, ProfanityCheckResult } from '../core/types';
2
+ import type { CheckProfanityResult } from '../types/types';
3
+ export type { ProfanityCheckerConfig };
4
+ export declare const useProfanityChecker: (config?: ProfanityCheckerConfig) => {
5
+ result: CheckProfanityResult;
6
+ checkText: (text: string) => ProfanityCheckResult;
7
+ checkTextAsync: (text: string) => Promise<ProfanityCheckResult>;
8
+ reset: () => void;
9
+ isDirty: boolean;
10
+ isWordProfane: (word: string) => boolean;
11
+ };