{"_id":"@dwcks/bad-word-filter-vi-en","_rev":"5-538039f309bef5964f5f41fb4965f5c1","name":"@dwcks/bad-word-filter-vi-en","dist-tags":{"latest":"1.1.3"},"versions":{"1.0.0":{"name":"@dwcks/bad-word-filter-vi-en","version":"1.0.0","keywords":["bad-word-filter","profanity-filter","typescript","vietnamese","english"],"author":{"name":"DwcksDinh"},"license":"MIT","_id":"@dwcks/bad-word-filter-vi-en@1.0.0","maintainers":[{"name":"dwcks","email":"corclan19@gmail.com"}],"homepage":"https://github.com/DwcksDinh/bad-word-filter#readme","bugs":{"url":"https://github.com/DwcksDinh/bad-word-filter/issues"},"dist":{"shasum":"d63c22176defa10e9e30ffe538e0aca0ae9a676e","tarball":"https://registry.npmjs.org/@dwcks/bad-word-filter-vi-en/-/bad-word-filter-vi-en-1.0.0.tgz","fileCount":8,"integrity":"sha512-mpE9oH49lgE4EZrw9/jSVtJbtmEKZO2Tti3G+cGAzg1BWcM8zHUz4QxLAVPcoWz/yAAdlIHgUeZHhnbtf/M1xw==","signatures":[{"sig":"MEUCIHNeN0PM/KpGA2iorJ5tXB/galfTs9Z8fNVY8xTurJjbAiEA12nNZ+eG/m5Wqu2yXrt3yaxgU8huIFJhJhXtZkDqu3A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60163},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"2c8377703792ae2ef1abbc213c138bd74569b1a4","scripts":{"test":"ts-node tests/test-bad-word-filter.ts","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"dwcks","email":"corclan19@gmail.com"},"repository":{"url":"git+https://github.com/DwcksDinh/bad-word-filter.git","type":"git"},"_npmVersion":"11.3.0","description":"Thư viện lọc từ xấu tiếng Việt và tiếng Anh","directories":{},"_nodeVersion":"24.0.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bad-word-filter-vi-en_1.0.0_1749446249745_0.911041297429978","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@dwcks/bad-word-filter-vi-en","version":"1.1.0","keywords":["bad-word-filter","profanity-filter","typescript","vietnamese","english"],"author":{"name":"DwcksDinh"},"license":"MIT","_id":"@dwcks/bad-word-filter-vi-en@1.1.0","maintainers":[{"name":"dwcks","email":"corclan19@gmail.com"}],"homepage":"https://github.com/DwcksDinh/bad-word-filter#readme","bugs":{"url":"https://github.com/DwcksDinh/bad-word-filter/issues"},"dist":{"shasum":"ba68389725eeb2a9e06765095ccb53510d070def","tarball":"https://registry.npmjs.org/@dwcks/bad-word-filter-vi-en/-/bad-word-filter-vi-en-1.1.0.tgz","fileCount":9,"integrity":"sha512-R67BjgdOCoehaCdTAFzCNbtuXHdE5F4t1oW+P1Z4yOoS7SdiAcntW3nCEopsqxDBJ0q8OJGmycrIKcKg5OVRzw==","signatures":[{"sig":"MEUCIQDWwh1EHOZJ0Psyw//EYK/jRHWe+d9/gjsf8f+J0N4RBwIgdYI11OjOZFenus+bX9yW1D8NY5wTsDeaazVjJ4UXmCc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109856},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5d44814d6d71e8ef88d0768ac1606647558e25e6","scripts":{"test":"ts-node tests/test-bad-word-filter.ts","build":"tsc","copy-files":"cp bad-words.txt dist/","prepublishOnly":"npm run build"},"_npmUser":{"name":"dwcks","email":"corclan19@gmail.com"},"repository":{"url":"git+https://github.com/DwcksDinh/bad-word-filter.git","type":"git"},"_npmVersion":"11.3.0","description":"Thư viện lọc từ xấu tiếng Việt và tiếng Anh","directories":{},"_nodeVersion":"24.0.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39","devDependencies":{"ts-node":"^10.9.2","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bad-word-filter-vi-en_1.1.0_1749451683997_0.055451819662544866","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@dwcks/bad-word-filter-vi-en","version":"1.1.1","keywords":["bad-word-filter","profanity-filter","typescript","vietnamese","english"],"author":{"name":"DwcksDinh"},"license":"MIT","_id":"@dwcks/bad-word-filter-vi-en@1.1.1","maintainers":[{"name":"dwcks","email":"corclan19@gmail.com"}],"homepage":"https://github.com/DwcksDinh/bad-word-filter#readme","bugs":{"url":"https://github.com/DwcksDinh/bad-word-filter/issues"},"dist":{"shasum":"c329c4dd37643700d914b5515793dd07d1050b59","tarball":"https://registry.npmjs.org/@dwcks/bad-word-filter-vi-en/-/bad-word-filter-vi-en-1.1.1.tgz","fileCount":9,"integrity":"sha512-f2n4NI9mFJ7pGvko4PW/SiXpUwBXNEJpeGnGCPkd06GdMaeV8mGjfCgqtR6Joqp5FOO7RR3vSyJzbwx0sGIEug==","signatures":[{"sig":"MEUCIEjPWne3DJ52iaLEhPR0DpzQPvTvK7Ctzyx5ACYaX26wAiEAun68XRrDrB9G+zEQZsP95McPhJ/E3+en1b+78nCPniE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109859},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"5d44814d6d71e8ef88d0768ac1606647558e25e6","scripts":{"test":"ts-node tests/test-bad-word-filter.ts","build":"tsc","copy-files":"cp bad-words.txt dist/","prepublishOnly":"npm run build"},"_npmUser":{"name":"dwcks","email":"corclan19@gmail.com"},"repository":{"url":"git+https://github.com/DwcksDinh/bad-word-filter.git","type":"git"},"_npmVersion":"11.3.0","description":"Thư viện lọc từ xấu tiếng Việt và tiếng Anh","directories":{},"_nodeVersion":"24.0.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39","devDependencies":{"ts-node":"^10.9.2","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bad-word-filter-vi-en_1.1.1_1749451971369_0.3192769013018364","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@dwcks/bad-word-filter-vi-en","version":"1.1.2","keywords":["bad-word-filter","profanity-filter","typescript","vietnamese","english"],"author":{"name":"DwcksDinh"},"license":"MIT","_id":"@dwcks/bad-word-filter-vi-en@1.1.2","maintainers":[{"name":"dwcks","email":"corclan19@gmail.com"}],"homepage":"https://github.com/DwcksDinh/bad-word-filter#readme","bugs":{"url":"https://github.com/DwcksDinh/bad-word-filter/issues"},"dist":{"shasum":"09bb6f0957143ec2f91a17de836b6e91e945ccb0","tarball":"https://registry.npmjs.org/@dwcks/bad-word-filter-vi-en/-/bad-word-filter-vi-en-1.1.2.tgz","fileCount":8,"integrity":"sha512-kZ4BB0wHfqZVJSD++s68F5UuK/k3Zsi1xUkT1Si3VTqo5Zk8wKj0hUv49/4z+iQg6bMN7PqNuCZSe9WTLGGHkg==","signatures":[{"sig":"MEUCIFZ8uphLA5bJDf//06ycIFSElAyqa/wk/+o6aQmqWRkhAiEAgNBTRJK92kcURaNAPGuViiBsQP737R6IDj1BoOIOhjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60414},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"28c0e5b83a32d4a4e5084e61c49c778e5a8c22a1","scripts":{"test":"ts-node tests/test-bad-word-filter.ts","build":"tsc","copy-files":"cp bad-words.txt dist/","prepublishOnly":"npm run build"},"_npmUser":{"name":"dwcks","email":"corclan19@gmail.com"},"repository":{"url":"git+https://github.com/DwcksDinh/bad-word-filter.git","type":"git"},"_npmVersion":"11.3.0","description":"Thư viện lọc từ xấu tiếng Việt và tiếng Anh","directories":{},"_nodeVersion":"24.0.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39","devDependencies":{"ts-node":"^10.9.2","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/bad-word-filter-vi-en_1.1.2_1749452175644_0.7426703208406369","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@dwcks/bad-word-filter-vi-en","version":"1.1.3","description":"Thư viện lọc từ xấu tiếng Việt và tiếng Anh","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","copy-files":"cp bad-words.txt dist/","test":"ts-node tests/test-bad-word-filter.ts","prepublishOnly":"npm run build"},"keywords":["bad-word-filter","profanity-filter","typescript","vietnamese","english"],"author":{"name":"DwcksDinh"},"license":"MIT","devDependencies":{"@types/node":"^20.0.0","ts-node":"^10.9.2","typescript":"^5.0.0"},"repository":{"type":"git","url":"git+https://github.com/DwcksDinh/bad-word-filter.git"},"publishConfig":{"access":"public"},"packageManager":"pnpm@10.10.0+sha512.d615db246fe70f25dcfea6d8d73dee782ce23e2245e3c4f6f888249fb568149318637dca73c2c5c8ef2a4ca0d5657fb9567188bfab47f566d1ee6ce987815c39","_id":"@dwcks/bad-word-filter-vi-en@1.1.3","gitHead":"b39e68f7fc15eba0dae21de008f8f7f8c39e63f4","bugs":{"url":"https://github.com/DwcksDinh/bad-word-filter/issues"},"homepage":"https://github.com/DwcksDinh/bad-word-filter#readme","_nodeVersion":"24.0.2","_npmVersion":"11.3.0","dist":{"integrity":"sha512-krIwQh8hhre9HjZ1qkMyOJnPKKG8S/yjVeXj1iJOJ/Jxz3rdq0ceAgePanyfJK4+jZ0E0j2Tg4glcPDCgad9ZQ==","shasum":"eedcfe087a96ef86defc31fcb6b7035450055997","tarball":"https://registry.npmjs.org/@dwcks/bad-word-filter-vi-en/-/bad-word-filter-vi-en-1.1.3.tgz","fileCount":8,"unpackedSize":60449,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEnfbowQRT4LeZPoNQr2TCwVwbO7RS7lNPyWNQ4q0CKtAiEA/A/oIvfnn45xvpXmkycxES/fqF70qK3IZdD9X/NKrxg="}]},"_npmUser":{"name":"dwcks","email":"corclan19@gmail.com"},"directories":{},"maintainers":[{"name":"dwcks","email":"corclan19@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bad-word-filter-vi-en_1.1.3_1749452922986_0.44039715083779796"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-09T05:17:29.685Z","modified":"2025-06-09T07:08:43.636Z","1.0.0":"2025-06-09T05:17:29.940Z","1.1.0":"2025-06-09T06:48:04.180Z","1.1.1":"2025-06-09T06:52:51.538Z","1.1.2":"2025-06-09T06:56:15.810Z","1.1.3":"2025-06-09T07:08:43.141Z"},"bugs":{"url":"https://github.com/DwcksDinh/bad-word-filter/issues"},"author":{"name":"DwcksDinh"},"license":"MIT","homepage":"https://github.com/DwcksDinh/bad-word-filter#readme","keywords":["bad-word-filter","profanity-filter","typescript","vietnamese","english"],"repository":{"type":"git","url":"git+https://github.com/DwcksDinh/bad-word-filter.git"},"description":"Thư viện lọc từ xấu tiếng Việt và tiếng Anh","maintainers":[{"name":"dwcks","email":"corclan19@gmail.com"}],"readme":"# Bộ Lọc Từ Xấu\n\nThư viện TypeScript để phát hiện và lọc các từ ngữ xúc phạm trong văn bản, hỗ trợ tiếng Việt và tiếng Anh, bao gồm các từ phân biệt vùng miền. Từ xấu được lưu trong file `bad-words.txt` hoặc cung cấp trực tiếp qua mảng.\n\n## Tính năng\n- Phát hiện từ/cụm từ xúc phạm (không phân biệt hoa/thường).\n- Thay thế từ xấu bằng ký tự che mờ (mặc định: `*`).\n- Hỗ trợ từ xấu tiếng Việt (ví dụ: `địt`, `đồ Bắc Kỳ`) và tiếng Anh (ví dụ: `fuck`, `shit`).\n- Tương thích với Node.js, Next.js (server-side), và các môi trường khác.\n- Xử lý lỗi khi đọc file từ xấu.\n\n## Cài đặt\n```bash\nnpm install @dwcks/bad-word-filter-vi-en\n```\n\nĐảm bảo file `bad-words.txt` tồn tại trong thư mục gốc của dự án hoặc cung cấp danh sách từ xấu trực tiếp.\n\n## Sử dụng\n### Trong Node.js\n```typescript\nimport { BadWordFilter } from '@dwcks/bad-word-filter-vi-en';\n\n(async () => {\n  const filter = await BadWordFilter.create(); // Đọc từ bad-words.txt\n  console.log(filter.hasBadWord('Bình luận có từ địt không?')); // true\n  console.log(filter.filter('Bình luận có từ địt không?')); // Bình luận có từ *** không?\n})();\n```\n\n### Trong Next.js (API Route)\nTạo file `pages/api/filter.ts`:\n```typescript\nimport type { NextApiRequest, NextApiResponse } from 'next';\nimport { BadWordFilter } from '@dwcks/bad-word-filter-vi-en';\n\nexport default async function handler(req: NextApiRequest, res: NextApiResponse) {\n  if (req.method === 'POST') {\n    try {\n      const { text } = req.body;\n      if (!text || typeof text !== 'string') {\n        return res.status(400).json({ error: 'Văn bản không hợp lệ' });\n      }\n      const filter = await BadWordFilter.create(['địt', 'ngu']); // Hoặc đọc từ file\n      const hasBadWord = filter.hasBadWord(text);\n      const filteredText = filter.filter(text);\n      res.status(200).json({ hasBadWord, filteredText });\n    } catch (error) {\n      res.status(500).json({ error: `Lỗi khi lọc: ${error.message}` });\n    }\n  } else {\n    res.status(405).json({ error: 'Phương thức không được hỗ trợ' });\n  }\n}\n```\n\nGọi API từ client:\n```typescript\nconst response = await fetch('/api/filter', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({ text: 'Bình luận có từ địt không?' }),\n});\nconst result = await response.json();\nconsole.log(result); // { hasBadWord: true, filteredText: 'Bình luận có từ *** không?' }\n```\n\n## Cấu trúc dự án\n```\n/bad-word-filter\n├── bad-words.txt        # Danh sách từ xấu (UTF-8)\n├── dist                 # Code đã biên dịch\n├── src\n│   ├── BadWordFilter.ts # Lớp lọc chính\n│   ├── index.ts         # Xuất module\n├── tests\n│   ├── test-bad-word-filter.ts # Script kiểm tra\n├── README.md\n├── LICENSE\n```\n\n## Kiểm tra\n```bash\nnpm run test\n```\n\n## Lưu ý\n- **Mã hóa**: File `bad-words.txt` phải được lưu ở định dạng UTF-8.\n- **Cụm từ**: Regex hiện hỗ trợ cụm từ (ví dụ: `đồ Bắc Kỳ`). Kiểm tra cẩn thận để tránh khớp sai.\n- **Next.js Serverless**: Nếu triển khai trên Vercel, đảm bảo cung cấp `bad-words.txt` trong thư mục gốc hoặc dùng mảng từ xấu.\n- **Nhạy cảm văn hóa**: Các từ như `Bắc Kỳ`, `Nam Kỳ` rất nhạy cảm, sử dụng đúng ngữ cảnh (kiểm duyệt).\n\n## Giấy phép\nMIT License","readmeFilename":"README.md"}