{"id":14973679,"url":"https://github.com/probil/v-mask","last_synced_at":"2025-10-27T02:31:17.909Z","repository":{"id":39544780,"uuid":"65584112","full_name":"probil/v-mask","owner":"probil","description":"🔡 Tiny input mask library for Vue.js (directive)","archived":true,"fork":false,"pushed_at":"2024-09-04T13:28:57.000Z","size":6790,"stargazers_count":895,"open_issues_count":74,"forks_count":132,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-10-17T09:48:03.323Z","etag":null,"topics":["input-mask","mask-lib","vue","vue2"],"latest_commit_sha":null,"homepage":"https://v-mask-demo.netlify.com","language":"JavaScript","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/probil.png","metadata":{"files":{"readme":"README-pt.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","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},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"probil","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2016-08-12T21:18:13.000Z","updated_at":"2025-10-17T00:17:02.000Z","dependencies_parsed_at":"2023-09-24T09:04:33.182Z","dependency_job_id":"509ff31b-5f55-4bd9-aa5b-67ff4b06d577","html_url":"https://github.com/probil/v-mask","commit_stats":{"total_commits":1330,"total_committers":25,"mean_commits":53.2,"dds":"0.29548872180451125","last_synced_commit":"491315066d74ee23309ea644674891e1d7106f9b"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/probil/v-mask","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probil%2Fv-mask","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probil%2Fv-mask/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probil%2Fv-mask/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probil%2Fv-mask/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/probil","download_url":"https://codeload.github.com/probil/v-mask/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/probil%2Fv-mask/sbom","scorecard":{"id":745745,"data":{"date":"2025-08-11","repo":{"name":"github.com/probil/v-mask","commit":"491315066d74ee23309ea644674891e1d7106f9b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/27 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":3,"reason":"dependency not pinned by hash detected -- score normalized to 3","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/probil/v-mask/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/probil/v-mask/release.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/release.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yml:10"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 7 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"17 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-4q6p-r6v2-jvc5","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-5j4c-8p2g-v4jx","Warn: Project is vulnerable to: GHSA-g3ch-rx76-35fx","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T18:39:41.246Z","repository_id":39544780,"created_at":"2025-08-22T18:39:41.247Z","updated_at":"2025-08-22T18:39:41.247Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280325297,"owners_count":26311419,"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","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["input-mask","mask-lib","vue","vue2"],"created_at":"2024-09-24T13:49:13.395Z","updated_at":"2025-10-27T02:31:17.617Z","avatar_url":"https://github.com/probil.png","language":"JavaScript","funding_links":["https://ko-fi.com/probil"],"categories":[],"sub_categories":[],"readme":"# :abcd: Vue input mask\n[![npm](https://img.shields.io/npm/v/v-mask.svg)](https://www.npmjs.com/package/v-mask)\n![npm bundle size](https://img.shields.io/bundlephobia/minzip/v-mask)\n[![npm](https://img.shields.io/npm/dm/v-mask.svg)](https://www.npmjs.com/package/v-mask)\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/probil/v-mask/master/LICENSE)\n[![Vue2](https://img.shields.io/badge/Vue-2.x-brightgreen.svg)](https://vuejs.org/)\n[![jsDelivr](https://data.jsdelivr.com/v1/package/npm/v-mask/badge?style=rounded)](https://www.jsdelivr.com/package/npm/v-mask)\n[![Tested with TestCafe](https://img.shields.io/badge/tested%20with-TestCafe-2fa4cf.svg)](https://github.com/DevExpress/testcafe)\n\n\u003e Biblioteca enxuta baseado no [text-mask-core](https://github.com/text-mask/text-mask/tree/master/core) (~5kb) apenas diretiva. sem dependências.\n\n\u003cdiv align=\"center\"\u003e\n  \u003ch3\u003e\n    \u003ca href=\"https://github.com/probil/v-mask/blob/master/README.md\"\u003eEnglish\u003c/a\u003e\n    \u003cspan\u003e | \u003c/span\u003e\n    \u003cstrong\u003e\n      \u003ca href=\"https://github.com/probil/v-mask/blob/master/README-pt.md\"\u003ePortuguês\u003c/a\u003e\n    \u003c/strong\u003e\n  \u003c/h3\u003e\n\u003c/div\u003e\n\n## :art: Playground na Web\n\n- https://codesandbox.io/s/m3q1m5yp9x ( playground interativo com webpack e ESM)\n- https://jsfiddle.net/probil/c6fjjzn6/ ( playground interativo simples com UMD)\n- https://v-mask-demo.netlify.com/ ( Demo v-mask )\n\n\n## :heavy_check_mark: Navegadores suportados\n\n|![Chrome](https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png) | ![Firefox](https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png) | ![Safari](https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png) | ![Opera](https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png) | ![Edge](https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_48x48.png) | ![iOS Safari](https://raw.github.com/alrra/browser-logos/master/src/safari-ios/safari-ios_48x48.png) | ![Android WebView](https://raw.github.com/alrra/browser-logos/master/src/android-webview-beta/android-webview-beta_48x48.png) | ![Android WebView](https://raw.github.com/alrra/browser-logos/master/src/samsung-internet/samsung-internet_48x48.png)\n| --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| 74+ :heavy_check_mark: | 66+ :heavy_check_mark:  | 12+ :heavy_check_mark: | 46+ :heavy_check_mark: | 17+ :heavy_check_mark: | 11+ :heavy_check_mark: | 12+ :heavy_check_mark: | 67+ :heavy_check_mark: | 8.2+ :heavy_check_mark:\n\nSuportamos apenas navegadores com estatísticas de uso global superiores a 1%, última versão 2 de cada navegador, mas não navegadores inativos. A biblioteca pode funcionar em navegadores antigos, mas não garantimos isso. Você pode precisar de polyfills adicionais para fazê-lo funcionar.\n\n\n## :cd: Instalação\n\nEsta versão requer o Vue 2.X. Se você está utilizando o Vue 1.X [clique aqui](https://github.com/probil/v-mask/tree/vue-1.x).\n\n```sh\nnpm install v-mask\n```\n\n## Inicialização\n\n### ES2015 (Webpack/Rollup/Browserify/etc)\n\n```javascript\nimport Vue from 'vue'\n\n// usar o plugin\nimport VueMask from 'v-mask'\nVue.use(VueMask);\n\n// usar a diretiva\nimport { VueMaskDirective } from 'v-mask'\nVue.directive('mask', VueMaskDirective);\n\n// usar apenas o filtro\nimport { VueMaskFilter } from 'v-mask'\nVue.filter('VMask', VueMaskFilter)\n```\n\n### UMD (Browser)\n\n```html\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/v-mask/dist/v-mask.min.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n// usar o plugin\nVue.use(VueMask.VueMaskPlugin);\n\n// usar a diretiva\nVue.directive('mask', VueMask.VueMaskDirective);\n\u003c/script\u003e\n```\n\n## :rocket: Utilizando\n\n```html\n\u003cinput type=\"text\" v-mask=\"'####-##'\" v-model=\"myInputModel\"\u003e\n\u003c!-- OU --\u003e\n\u003cinput type=\"text\" v-mask=\"nameOfVariableWithMask\" v-model=\"myInputModel\"\u003e\n```\n**Notice:** `v-model` é necessário a partir da versão `v1.1.0`, porque acabam [existindo](https://github.com/probil/v-mask/issues/16) [muitos](https://github.com/probil/v-mask/issues/30) [bugs](https://github.com/probil/v-mask/issues/29)\ncom ouvintes de eventos HTMLElement e sincronização dos mesmos com o Vue.\n\nNão há razão para suportar o uso dessa lib para uso sem o modelo `v-model`, mas abra a porta para uso em [inputs personalizados](http://vuejs.org/v2/guide/components.html#Form-Input-Components-using-Custom-Events).\n\n### Utilizando o filtro\n```html\n\u003cspan\u003e{{ '9999999999' | VMask('(###) ###-####') }}\u003c/span\u003e\n```\n\n## :gear: Configurações\n\nLista de simbolos reservados para máscara:\n\n| Value | Format                               |\n|-------|--------------------------------------|\n| #     | Números (0-9)                        |\n| A     | Caractere de qualquer case (a-z,A-Z) |\n| N     | Caractere ou Números                 |\n| X     | Qualquer símbolo                     |\n| ?     | Opcional (próximo caractere)         |\n\n## :syringe: Tests\n\n[Jest](https://github.com/facebook/jest) é usado para fazer os testes-unitários\n\nTestes unitários podem ser executados utilizando o seguinte comando:\n\n```bash\nnpm test\n```\n\n[TestCafe](https://github.com/DevExpress/testcafe) é usando para fazer testes E2E.\n\nE2E-tests podem ser executados utilizando o seguinte comando:\n\n```bash\nnpm test:e2e\n```\n\n## :anchor: Versionamento Semântico\n\nEste plugin segue [semantic versioning](http://semver.org/).\n\n## :newspaper: Changelog\n\nEstamos usando [GitHub Releases](https://github.com/probil/v-mask/releases).\n\n## :beers: Contribuições\n\n\nEstamos muito felizes em ver contribuições em potencial, então não hesite. Se você tiver alguma sugestão, ideia ou problema, sinta-se à vontade para adicionar um novo [issue](https://github.com/probil/v-mask/issues), mas primeiro verifique se a sua pergunta não repete as anteriores.\n\nAviso: Você deve fazer suas alterações apenas na pasta `src`, não tente editar arquivos do `dist`, pois ele foi compilado a partir do `src` a partir do babel e não deve ser alterado manualmente.\n\n## :lock: Licença\n\nConsulte o arquivo [LICENSE](LICENSE) para obter os direitos e limitações da licença (MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprobil%2Fv-mask","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprobil%2Fv-mask","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprobil%2Fv-mask/lists"}