{"id":13674849,"url":"https://github.com/VitorLuizC/brazilian-values","last_synced_at":"2025-04-28T14:32:24.690Z","repository":{"id":33149935,"uuid":"147210751","full_name":"VitorLuizC/brazilian-values","owner":"VitorLuizC","description":"🇧🇷 Funções de formatação, conversão e validação para valores, documentos e outras unidades usadas no Brasil. Como CEP, CNPJ, CPF, BRL (R$), datas, números etc.","archived":false,"fork":false,"pushed_at":"2024-02-03T20:13:19.000Z","size":1946,"stargazers_count":542,"open_issues_count":18,"forks_count":39,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-25T00:44:42.676Z","etag":null,"topics":["brazilian","brazilian-formatters","brazilian-helpers","brazilian-portuguese","brazilian-util","brazilian-validators","brl","cep","cnpj","cnpj-validator","cpf","cpf-validador","cpf-validator","cpj","date-formatting","formatters","hacktoberfest","validators"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VitorLuizC.png","metadata":{"files":{"readme":"README.en.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-03T13:44:38.000Z","updated_at":"2025-04-12T13:45:28.000Z","dependencies_parsed_at":"2024-06-18T13:55:23.866Z","dependency_job_id":null,"html_url":"https://github.com/VitorLuizC/brazilian-values","commit_stats":{"total_commits":213,"total_committers":14,"mean_commits":"15.214285714285714","dds":"0.12676056338028174","last_synced_commit":"762abe7f5daf246cd5138eb75a7075e8d84b94a1"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VitorLuizC%2Fbrazilian-values","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VitorLuizC%2Fbrazilian-values/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VitorLuizC%2Fbrazilian-values/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VitorLuizC%2Fbrazilian-values/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VitorLuizC","download_url":"https://codeload.github.com/VitorLuizC/brazilian-values/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251330455,"owners_count":21572286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["brazilian","brazilian-formatters","brazilian-helpers","brazilian-portuguese","brazilian-util","brazilian-validators","brl","cep","cnpj","cnpj-validator","cpf","cpf-validador","cpf-validator","cpj","date-formatting","formatters","hacktoberfest","validators"],"created_at":"2024-08-02T11:01:04.763Z","updated_at":"2025-04-28T14:32:24.228Z","avatar_url":"https://github.com/VitorLuizC.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Brazilian Values\n\n[🇧🇷 Trocar para a versão em português](./README.md)\n\n[![Build Status](https://travis-ci.org/VitorLuizC/brazilian-values.svg?branch=master)](https://travis-ci.org/VitorLuizC/brazilian-values)\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FVitorLuizC%2Fbrazilian-values.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2FVitorLuizC%2Fbrazilian-values?ref=badge_shield)\n[![License](https://badgen.net/github/license/VitorLuizC/brazilian-values)](./LICENSE)\n[![Library minified size](https://badgen.net/bundlephobia/min/brazilian-values)](https://bundlephobia.com/result?p=brazilian-values)\n[![Library minified + gzipped size](https://badgen.net/bundlephobia/minzip/brazilian-values)](https://bundlephobia.com/result?p=brazilian-values)\n\nValidates and formats brazilian values, like money (BRL), CPF, CNPJ, dates etc.\n\nRead this in other language: [Brazilian portuguese](https://github.com/g1llz/brazilian-values/blob/master/README.br.md)\n## Install\n\nThis module is published under NPM registry, so you can install using any Node.js package manager.\n\n```sh\nnpm install brazilian-values --save\n\n# For Yarn use the command below.\nyarn add brazilian-values\n```\n\n### Install from CDN\n\nThe bundles of this module are also available on [JSDelivr](https://www.jsdelivr.com/) and [UNPKG](https://unpkg.com/) CDNs.\n\n\u003e In both you can import just the _bundle_ you want or use default one, UMD.\n\n```html\n\u003c!-- Using default bundle from JSDelivr --\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/brazilian-values\"\u003e\u003c/script\u003e\n\n\u003c!-- Using default bundle from UNPKG --\u003e\n\u003cscript src=\"https://unpkg.com/brazilian-values\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\n  /**\n   * UMD bundle expose brazilian-values through `BrazilianValues` object.\n   */\n  BrazilianValues.formatToBRL(100);\n  //=\u003e 'R$ 100,00'\n\u003c/script\u003e\n```\n\n## Usage\n\n`brazilian-values` provides functions to deal with formatting, validating and parsing brazilian values. All those functions could be imported from package.\n\n```js\nimport { isCNPJ, formatToCNPJ } from 'brazilian-values';\n\nconst value = '12727442000113'\n\nif (!isCNPJ(value))\n  throw new Error('CNPJ is not valid.');\nconst document = formatToCNPJ(value);\n//=\u003e '12.727.442/0001-13'\n```\n\n## API\n\n\u003cdetails\u003e\n  \u003csummary\u003eFormatters\u003c/summary\u003e\n\n- [`formatToBRL`](#formatToBRL)\n- [`formatToCAEPF`](#formatToCAEPF)\n- [`formatToCapitalized`](#formatToCapitalized)\n- [`formatToCEP`](#formatToCEP)\n- [`formatToCNPJ`](#formatToCNPJ)\n- [`formatToCPF`](#formatToCPF)\n- [`formatToCPFOrCNPJ`](#formatToCPFOrCNPJ)\n- [`formatToDate`](#formatToDate)\n- [`formatToDateTime`](#formatToDateTime)\n- [`formatToList`](#formatToList)\n- [`formatToNumber`](#formatToNumber)\n- [`formatToPhone`](#formatToPhone)\n- [`formatToRG`](#formatToRG)\n- [`formatToHiddenDigits`](#formatToHiddenDigits)\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eParsers\u003c/summary\u003e\n\n- [`parseToArray`](#parseToArray)\n- [`parseToDate`](#parseToDate)\n- [`parseToNumber`](#parseToNumber)\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eValidators\u003c/summary\u003e\n\n- [`isCAEPF`](#isCAEPF)\n- [`isCEP`](#isCEP)\n- [`isCNPJ`](#isCNPJ)\n- [`isCPF`](#isCPF)\n- [`isCPFOrCNPJ`](#isCPFOrCNPJ)\n- [`isDate`](#isDate)\n- [`isDDD`](#isDDD)\n- [`isPhone`](#isPhone)\n\u003c/details\u003e\n\n### Formatters\n\n#### `formatToBRL`\n\nFormats numbers or texts containing numbers to brazilian currency (BRL).\n\n```js\nformatToBRL(1928.93)\n//=\u003e 'R$ 1.928,93'\n\nformatToBRL('9211928.18203')\n//=\u003e 'R$ 9.211.928,18'\n\nformatToBRL(-18.49)\n//=\u003e 'R$ -18,49'\n```\n\n#### `formatToCAEPF`\n\nFormats a text containing numbers to CAEPF.\n\n```js\nformatToCAEPF('128781')\n//=\u003e '128.781'\n\nformatToCAEPF('32284981000150')\n//=\u003e '322.849.810/001-50'\n\nformatToCAEPF('00.0.000.00.00--00-00')\n//=\u003e '000.000.000/000-00'\n```\n\n#### `formatToCapitalized`\n\nCapitalizes the words in a text, except for words that are set to be uppercase or lowercase.\n\n\u003e The first word of the text will not be lowercase even if set to.\n\n```js\nformatToCapitalized('SERVIDOR PÚBLICO MUNICIPAL')\n//=\u003e 'Servidor Público Municipal'\n\nformatToCapitalized('   os PrimEIROS  HOMens da tERra', {\n  wordsToKeepLowerCase: ['os', 'da']\n})\n//=\u003e 'Os Primeiros Homens da Terra'\n\nformatToCapitalized('nova tv foi lançada', {\n  wordsToKeepUpperCase: ['tv']\n})\n//=\u003e 'Nova TV Foi Lançada'\n\nformatToCapitalized(' com espaços antes e depois ', {\n  trimTrailingWhiteSpaces: false\n})\n//=\u003e ' Com Espaços Antes e Depois '\n```\n\n#### `formatToCEP`\n\nFormats a text containing numbers to CEP.\n\n```js\nformatToCEP('15998030')\n//=\u003e '15998-030'\n\nformatToCEP('02999')\n//=\u003e '02999'\n```\n\n#### `formatToCNPJ`\n\nFormats a text containing numbers to CNPJ.\n\n```js\nformatToCNPJ('128781')\n//=\u003e '12.878.1'\n\nformatToCNPJ('32284981000138')\n//=\u003e '32.284.981/0001-38'\n\nformatToCNPJ('00.0.000.00.00--00-00')\n//=\u003e '00.000.000/0000-00'\n```\n\n#### `formatToCPF`\n\nFormats a text containing numbers to CPF.\n\n```js\nformatToCPF('00000000')\n//=\u003e '000.000.00'\n\nformatToCPF('00000000000')\n//=\u003e '000.000.000-00'\n\nformatToCPF('366.418.768-70')\n//=\u003e '366.418.768-70'\n```\n\n#### `formatToCPFOrCNPJ`\n\nFormats a `string` value containing numbers to CPF or CNPJ depending on its length.\n\n```js\nformatToCPFOrCNPJ('00000000')\n//=\u003e '000.000.00'\n\nformatToCPFOrCNPJ('366.418.768-70')\n//=\u003e '366.418.768-70'\n\nformatToCPFOrCNPJ('32284981000138')\n//=\u003e '32.284.981/0001-38'\n\nformatToCPFOrCNPJ('00.0.000.00.00--00-00')\n//=\u003e '00.000.000/0000-00'\n```\n\n#### `formatToDate`\n\nFormats a `Date` instance to brazilian formatted date, **`DD/MM/YYYY`**.\n\n```js\nformatToDate(new Date(2002, 7, 21))\n//=\u003e '21/08/2002'\n\nformatToDate(new Date())\n//=\u003e '08/09/2018'\n```\n\n\n#### `formatToDateTime`\n\nFormats a `Date` instance to brazilian formatted date and time, **`DD/MM/YYYY HH:mm`**.\n\n```js\nformatToDateTime(new Date(2002, 7, 21, 18, 30))\n//=\u003e '21/08/2002 18:30'\n```\n\n#### `formatToList`\n\nFormats an `Array` of `string` values into brazilian formatted list.\n\n```js\nformatToList(['Vitor', 'William', 'Fernando'])\n//=\u003e 'Vitor, William e Fernando'\n\nformatToList([])\n// =\u003e ''\n\nformatToList(['1', '2'])\n// =\u003e '1 e 2'\n\nformatToList(['Direito Civil'])\n//=\u003e 'Direito Civil'\n```\n\n#### `formatToNumber`\n\nFormats a number to brazilian formatted number.\n\n```js\nformatToNumber(0)\n//=\u003e '0'\n\nformatToNumber(-1299)\n//=\u003e '-1.299'\n\nformatToNumber(.981)\n//=\u003e '0,981'\n\nformatToNumber('19898.1298')\n//=\u003e '19.898,1298'\n```\n\n#### `formatToPhone`\n\nFormats a text containing numbers to common brazilian phone.\n\n```js\nformatToPhone('11')\n//=\u003e '(11'\n\nformatToPhone('11971626')\n//=\u003e '(11) 9716-26'\n\nformatToPhone('11971626799')\n//=\u003e '(11) 9 7162-6799'\n```\n\n#### `formatToRG`\n\nFormats a text containing numbers to RG, specifying the state.\n\n\u003e Today, `brazilian-values` supports only **SP** and **RJ** formats.\n\u003e Other values are just escaped to input.\n\n```js\nformatToRG('00000000A', 'SP')\n//=\u003e '00.000.000-A'\n\nformatToRG('00.00.0000-0', 'RJ')\n//=\u003e '00.000.000-0'\n\nformatToRG('MG-14.808.688', 'MG')\n//=\u003e 'MG-14.808.688'\n```\n\n#### `formatToHiddenDigits`\n\nFormats a `string` with digits by replacing digits within the range by the hider\ncharacter.\n\n```js\nformatToHiddenDigits('00.000-000')\n//=\u003e '**.*00-000'\n\nformatToHiddenDigits('03/04/2002', { hider: '-' })\n//=\u003e '--/-4/2002'\n\nformatToHiddenDigits('111.111.111-11', { range: [4, 9] })\n//=\u003e '111.***.***-11'\n\nformatToHiddenDigits('12.345.678-9', { hider: '#', range: 5 })\n//=\u003e '##.###.678-9'\n\nformatToHiddenDigits('52.715.348/0001-69', { hider: '@', range: -9 })\n//=\u003e '52.715.@@@/@@@@-@@'\n```\n\n### Parsers\n\n#### `parseToArray`\n\nParses a brazilian formatted list into an Array.\n\n```js\nparseToArray('')\n//=\u003e []\n\nparseToArray('1')\n//=\u003e ['1']\n\nparseToArray('1 e 2')\n//=\u003e ['1', '2']\n\nparseToArray('Fernanda, Luana e Ana Carolina')\n//=\u003e ['Fernanda', 'Luana', 'Ana Carolina']\n```\n\n#### `parseToDate`\n\nParses a brazilian formatted date to a Date instance.\n\n\u003e Throws an error if value does not match brazilian date format and if value is an invalid date.\n\n```js\nparseToDate('28/03/1996')\n//=\u003e Date('1996-03-28T03:00:00.000Z')\n\nparseToDate('28/03/1996 20:00')\n//=\u003e Date('1996-03-28T23:00:00.000Z')\n\nparseToDate('28/03/1996 20:00:00')\n//=\u003e Date('1996-03-28T23:00:00.000Z')\n\nparseToDate('31/02/2018')\n//=\u003e throws Error('Value \"31/02/2018\" is an invalid date.')\n```\n\n#### `parseToNumber`\n\nParses a brazilian formatted number to a number.\n\n```js\nparseToNumber('10')\n//=\u003e 10\n\nparseToNumber('-1.299')\n//=\u003e -1299\n\nparseToNumber('0,981')\n//=\u003e 0.981\n\nparseToNumber('19.898,1298')\n//=\u003e 19898.1298\n```\n\n### Validators\n\n#### `isCAEPF`\n\nValidates if value is a CAEPF.\n\n```js\nisCAEPF('45723174000122')\n//=\u003e true\n\nisCAEPF('457.231.740/001-22')\n//=\u003e false\n\nisCAEPF('45.723.174/0001-22')\n//=\u003e false\n\nisCAEPF('411407182')\n//=\u003e false\n\nisCAEPF('111.111.111/111-11')\n//=\u003e false\n```\n\n#### `isCEP`\n\nValidates if value is a CEP.\n\n```js\nisCEP('50.833-000')\n//=\u003e true\n\nisCEP('02998-050')\n//=\u003e true\n\nisCEP('00000000')\n//=\u003e true\n\nisCEP('0')\n//=\u003e false\n\nisCEP('1982891928981982198')\n//=\u003e false\n```\n\n#### `isCNPJ`\n\nValidates if value is a CNPJ.\n\n\u003e Related: [`isCPFOrCNPJ`](#isCPFOrCNPJ).\n\n```js\nisCNPJ('41142260000189')\n//=\u003e true\n\nisCNPJ('45.723.174/0001-10')\n//=\u003e true\n\nisCNPJ('411407182')\n//=\u003e false\n\nisCNPJ('11.111.111/1111-11')\n//=\u003e false\n```\n\n#### `isCPF`\n\nValidates if value is a CPF.\n\n\u003e Related: [`isCPFOrCNPJ`](#isCPFOrCNPJ).\n\n```js\nisCPF('366.418.768-70')\n//=\u003e true\n\nisCPF('36641876870')\n//=\u003e true\n\nisCPF('213.198.013-20')\n//=\u003e false\n\nisCPF('2131201872781')\n//=\u003e false\n\nisCPF('11111111111')\n//=\u003e false\n```\n\n#### `isCPFOrCNPJ`\n\nValidates if value is either a CPF or a CNPJ.\n\n\u003e Related: [`isCPF`](#isCPF), [`isCNPJ`](#isCNPJ).\n\n```js\nisCPFOrCNPJ('366.418.768-70')\n//=\u003e true\n\nisCPFOrCNPJ('36641876870')\n//=\u003e true\n\nisCPFOrCNPJ('213.198.013-20')\n//=\u003e false\n\nisCPFOrCNPJ('2131201872781')\n//=\u003e false\n\nisCPFOrCNPJ('11111111111')\n//=\u003e false\n\nisCPFOrCNPJ('41142260000189')\n//=\u003e true\n\nisCPFOrCNPJ('45.723.174/0001-10')\n//=\u003e true\n\nisCPFOrCNPJ('411407182')\n//=\u003e false\n\nisCPFOrCNPJ('11.111.111/1111-11')\n//=\u003e false\n```\n\n#### `isDate`\n\nValidates if value matches brazilian date format and is a valid date.\n\n```js\nisDate('03/08/2017')\n//=\u003e true\n\nisDate('28/13/2017')\n//=\u003e false\n\nisDate('03-08-2017')\n//=\u003e false\n\nisDate('31/03/18')\n//=\u003e false\n```\n\n#### `isDDD`\n\nValidates if value is a brazilian valid DDD (direct dialing at a distance) code.\n\n\u003e Based on [resolution No. 263 of June 8, 2001](https://www.anatel.gov.br/legislacao/resolucoes/16-2001/383-resolucao-263).\n\n```js\nisDDD('81')\n//=\u003e true\n\nisDDD('10')\n//=\u003e false\n\nisDDD('555')\n//=\u003e false\n```\n\n#### `isPhone`\n\nValidates if value matches common brazilian phone number, optionally with DDI, DDD and the ninth digit. If DDD is defined it'll be validated with `isDDD`.\n\n```js\nisPhone('+55 (11) 9 8273-1182')\n//=\u003e true\n\nisPhone('11 9 8273 1182')\n//=\u003e true\n\nisPhone('1139723768')\n//=\u003e true\n\nisPhone('(23) 3972-3768')\n//=\u003e false\n\nisPhone('(13) 6 5093-2093')\n//=\u003e false\n\nisPhone('(81) 555 178')\n//=\u003e false\n```\n\n## License\n\nReleased under [MIT license](./LICENSE).\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FVitorLuizC%2Fbrazilian-values.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2FVitorLuizC%2Fbrazilian-values?ref=badge_large)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FVitorLuizC%2Fbrazilian-values","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FVitorLuizC%2Fbrazilian-values","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FVitorLuizC%2Fbrazilian-values/lists"}