{"_id":"@afilimax/message-text-parser","name":"@afilimax/message-text-parser","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@afilimax/message-text-parser","version":"0.1.0","description":"Esta é uma biblioteca focada em extrair dados de mensagens de ofertas enviadas por canais do Telegram brasileiros.","type":"commonjs","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","dev":"ts-node ./src/index.ts","format":"prettier --write \"src/**/*.ts\" \"__tests__/**/*.ts\"","test":"jest"},"publishConfig":{"access":"public"},"keywords":["afilimax","offer parser","telegram message"],"author":{"name":"Marcuth"},"license":"MIT","devDependencies":{"@types/jest":"^30.0.0","@types/node":"^25.2.3","eslint":"^10.0.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","jest":"^30.2.0","prettier":"^3.8.1","prettier-plugin-sort-imports":"^1.8.10","ts-jest":"^29.4.6","ts-node":"^10.9.2","typescript":"^5.9.3"},"dependencies":{"zod":"^4.3.6"},"gitHead":"4af945e6eaeadf2c6e6eeb2d48759673a531359a","_id":"@afilimax/message-text-parser@0.1.0","_nodeVersion":"24.13.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-tWKVwMpjZOZks19PqB7AdDtpIgzbdvU9q6VPGtW515sCWbFGynXQC1K7AWvubJIlT9st/x6ZFpgoRtGUSRgokQ==","shasum":"1730bbbc26d4e64ed146c803bfdb660e1ef77ee0","tarball":"https://registry.npmjs.org/@afilimax/message-text-parser/-/message-text-parser-0.1.0.tgz","fileCount":43,"unpackedSize":22252,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCe6BcYypURQ3ClNRZrIPU95NM+VXBTsuLwaSHp+FIHtwIhAIws+htX/NB51l5n7mBScHk/WxeQGw82D86AAmluKGXd"}]},"_npmUser":{"name":"marcuth","email":"marcuth2006@gmail.com"},"directories":{},"maintainers":[{"name":"marcuth","email":"marcuth2006@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/message-text-parser_0.1.0_1771089968388_0.7199253961151677"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-14T17:26:08.275Z","0.1.0":"2026-02-14T17:26:08.550Z","modified":"2026-02-14T17:26:08.837Z"},"maintainers":[{"name":"marcuth","email":"marcuth2006@gmail.com"}],"description":"Esta é uma biblioteca focada em extrair dados de mensagens de ofertas enviadas por canais do Telegram brasileiros.","keywords":["afilimax","offer parser","telegram message"],"author":{"name":"Marcuth"},"license":"MIT","readme":"# @afilimax/message-text-parser\r\n\r\nEsta é uma biblioteca focada em extrair dados de mensagens de ofertas enviadas por canais do Telegram brasileiros.\r\n\r\n## Instalação\r\n\r\n```bash\r\nnpm install @afilimax/message-text-parser\r\n```\r\n\r\n## Uso\r\n\r\n```typescript\r\nimport { defaultParser } from \"@afilimax/message-text-parser\"\r\n\r\nconst offer = defaultParser.parse(`Tênis Charged Starlight Se Under Armour\r\n\r\n💲R$ 158,99\r\n💳 Em 6x Sem Juros\r\n🎟 Cupom: CARNAVAL40\r\n\r\n🔗https://mercadolivre.com/sec/2yaVLgw`) // Offer | null\r\n\r\nconsole.log(offer) /* {\r\n  title: 'Tênis Charged Starlight Se Under Armour',\r\n  price: { value: 158990, oldValue: null, currency: 'BRL' },\r\n  url: 'https://mercadolivre.com/sec/2yaVLgw',\r\n  coupons: [ 'CARNAVAL40' ]\r\n} */\r\n```\r\n\r\n## Canais suportados intencionalmente\r\n\r\n- [PC DO FAFA PROMOÇÕES](https://t.me/pcdofafapromo)\r\n- [TJ Gaming](https://t.me/TJGOFERTASs)\r\n- [Ofertas Adrenaline](https://t.me/ofertasadrenaline)\r\n- [Iskandar Souza - Promoções](https://t.me/IskandarSouza)\r\n- [Promocoes Do Tec](https://t.me/tecnoinffo)\r\n\r\n> Pode haver suporte a outros canais pelo fato do padrão de mensagens ser o mesmo, mas não são suportados intencionalmente. Se estiver interessado em adicionar suporte a um canal, abra um issue ou envie uma pull request com um parser implementado.\r\n\r\n## Como criar seu próprio parser e registrá-lo\r\n\r\n```typescript\r\nimport { OfferParser } from \"@afilimax/message-text-parser\"\r\n\r\nconst myParser: OfferParser<TelegramParserMeta> = {\r\n    name: \"meu-parser\",\r\n    meta: {\r\n        telegramChannelId: \"TELEGRAM_CHAT_ID\", // serve para que se você, no ato de parsing, enviar o channelId, ele vai mais facilmente identificar o parser correto por conta da condicional em `canParse`\r\n    },\r\n    canParse(text, context) {\r\n        if (context?.channelId && context.channelId === this.meta?.telegramChannelId) {\r\n            return true\r\n        }\r\n\r\n        return false\r\n    },\r\n    parse(text: string) {\r\n        return null\r\n    }\r\n}\r\n```\r\n\r\nDepois de criar o parser, basta registrá-lo no parser principal:\r\n\r\n```typescript\r\nimport { defaultParser } from \"@afilimax/message-text-parser\"\r\n\r\ndefaultParser.register(myParser)\r\n```\r\n\r\nOu um parser novo:\r\n\r\n```typescript\r\nimport { MessageTextParser } from \"@afilimax/message-text-parser\"\r\n\r\nconst parser = new MessageTextParser()\r\n\r\nparser.register(myParser)\r\n```\r\n\r\n## Contribuindo\r\n\r\nSe você quiser contribuir para o projeto, abra um issue ou envie uma pull request.\r\n\r\n## Licença\r\n\r\nEste projeto está licenciado sob a licença MIT - veja o arquivo [LICENSE](LICENSE) para detalhes.\r\n","readmeFilename":"README.md","_rev":"1-85e5203dd493c3cf7003bf8ac778ebd5"}