{"_id":"@andrevantunes/andrevds-constraints","_rev":"1-09abdf2d232e7b6d50e4b64184f0da4a","name":"@andrevantunes/andrevds-constraints","dist-tags":{"latest":"1.6.1"},"versions":{"1.6.0":{"name":"@andrevantunes/andrevds-constraints","version":"1.6.0","keywords":["andrevds","constraints","audience","segmentation"],"author":{"name":"André Antunes Vieira"},"license":"MIT","_id":"@andrevantunes/andrevds-constraints@1.6.0","maintainers":[{"name":"andrevantunes","email":"andreantunesv@gmail.com"}],"contributors":[{"name":"Ricardo Fredes"},{"url":"https://rafifos.dev","name":"Rafael Julio","email":"development@rafifos.dev"}],"homepage":"https://github.com/andrevantunes/andrevds-constraints","bugs":{"url":"https://github.com/andrevantunes/andrevds-constraints/issues","email":"andreantunesv+andrevds@gmail.com"},"dist":{"shasum":"366bc88218deee52904dece646ca9c8393ea22af","tarball":"https://registry.npmjs.org/@andrevantunes/andrevds-constraints/-/andrevds-constraints-1.6.0.tgz","fileCount":3,"integrity":"sha512-AB2LFc1Xf61kT3YhdYF+bM8I3/S+nH9BgZWUmRUC5UFGjCM44WqB3HCmwPtOgSUoL2wMJsMLxXpgtBoCpETnYA==","signatures":[{"sig":"MEUCIQDGZHfafFYck/c1dbD7tYv0hb0o0f6n+O6oMVrHNaeeugIgfDEfazeiyzjNrnExqU0KB76vAtehHt9Dp03s5lDE7ow=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6141},"main":"dist/index.js","engines":{"node":">= 16"},"gitHead":"4cfef8c3420f25e0679ac6bc5bc7323c3c521b7d","scripts":{"test":"jest","build":"tsc","test:watch":"jest --watch","semantic-release":"semantic-release"},"_npmUser":{"name":"andrevantunes","email":"andreantunesv@gmail.com"},"repository":{"url":"git+https://github.com/andrevantunes/andrevds-constraints.git","type":"git"},"_npmVersion":"10.9.0","description":"![License](https://img.shields.io/static/v1?label=Licence&message=MIT&color=yellow) ![Coverage](https://img.shields.io/static/v1?label=Coverage&message=100%&color=success) ![Build](https://img.shields.io/static/v1?label=Build&message=Success&color=lemon) ","directories":{},"_nodeVersion":"17.9.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.5.1","tslib":"^2.3.1","ts-jest":"^27.1.3","ts-node":"^10.7.0","typescript":"^4.6.2","@types/jest":"^27.4.1","@types/node":"^16","semantic-release":"^19.0.2","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^9.0.1","@semantic-release/github":"^8.0.2","@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/release-notes-generator":"^10.0.3","conventional-changelog-conventionalcommits":"^4.6.3"},"_npmOperationalInternal":{"tmp":"tmp/andrevds-constraints_1.6.0_1732713967009_0.0005577346758558477","host":"s3://npm-registry-packages"}},"1.6.1":{"name":"@andrevantunes/andrevds-constraints","version":"1.6.1","publishConfig":{"access":"public"},"keywords":["andrevds","constraints","audience","segmentation"],"homepage":"https://github.com/andrevantunes/andrevds-constraints","bugs":{"url":"https://github.com/andrevantunes/andrevds-constraints/issues","email":"andreantunesv+andrevds@gmail.com"},"license":"MIT","author":{"name":"André Antunes Vieira"},"contributors":[{"name":"Ricardo Fredes"},{"name":"Rafael Julio","email":"development@rafifos.dev","url":"https://rafifos.dev"}],"main":"dist/index.js","repository":{"type":"git","url":"git+https://github.com/andrevantunes/andrevds-constraints.git"},"engines":{"node":">= 16"},"scripts":{"build":"tsc","test":"jest","test:watch":"jest --watch","semantic-release":"semantic-release"},"devDependencies":{"@semantic-release/changelog":"^6.0.1","@semantic-release/commit-analyzer":"^9.0.2","@semantic-release/git":"^10.0.1","@semantic-release/github":"^8.0.2","@semantic-release/npm":"^9.0.1","@semantic-release/release-notes-generator":"^10.0.3","@types/jest":"^27.4.1","@types/node":"^16","conventional-changelog-conventionalcommits":"^4.6.3","jest":"^27.5.1","semantic-release":"^19.0.2","ts-jest":"^27.1.3","ts-node":"^10.7.0","tslib":"^2.3.1","typescript":"^4.6.2"},"_id":"@andrevantunes/andrevds-constraints@1.6.1","gitHead":"4cfef8c3420f25e0679ac6bc5bc7323c3c521b7d","types":"./dist/index.d.ts","description":"![License](https://img.shields.io/static/v1?label=Licence&message=MIT&color=yellow) ![Coverage](https://img.shields.io/static/v1?label=Coverage&message=100%&color=success) ![Build](https://img.shields.io/static/v1?label=Build&message=Success&color=lemon) ","_nodeVersion":"20.16.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-9dIvYQtz2bZofw6tl0S9i/HGi4VnoE75toKW/ZbySmxJHfKx5/eAvVUXVPvQWrzQieRGfH6VaJEMmQ8DPXAx6Q==","shasum":"e57e705b6b0e2461171622f45ad5cdfaa1fd2569","tarball":"https://registry.npmjs.org/@andrevantunes/andrevds-constraints/-/andrevds-constraints-1.6.1.tgz","fileCount":12,"unpackedSize":12305,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFAnWXuKFA/4uhyGb0GrNr61VRCZg1oT1UNzCSl750LcAiBGeBSCgzWKV6HTgd19VzTUuvaVzrwL4lrmYDfPkotVzg=="}]},"_npmUser":{"name":"andrevantunes","email":"andreantunesv@gmail.com"},"directories":{},"maintainers":[{"name":"andrevantunes","email":"andreantunesv@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/andrevds-constraints_1.6.1_1732748365186_0.8934041979666947"},"_hasShrinkwrap":false}},"time":{"created":"2024-11-27T13:26:06.906Z","modified":"2024-11-27T22:59:25.496Z","1.6.0":"2024-11-27T13:26:07.163Z","1.6.1":"2024-11-27T22:59:25.348Z"},"bugs":{"url":"https://github.com/andrevantunes/andrevds-constraints/issues","email":"andreantunesv+andrevds@gmail.com"},"author":{"name":"André Antunes Vieira"},"license":"MIT","homepage":"https://github.com/andrevantunes/andrevds-constraints","keywords":["andrevds","constraints","audience","segmentation"],"repository":{"type":"git","url":"git+https://github.com/andrevantunes/andrevds-constraints.git"},"description":"![License](https://img.shields.io/static/v1?label=Licence&message=MIT&color=yellow) ![Coverage](https://img.shields.io/static/v1?label=Coverage&message=100%&color=success) ![Build](https://img.shields.io/static/v1?label=Build&message=Success&color=lemon) ","contributors":[{"name":"Ricardo Fredes"},{"name":"Rafael Julio","email":"development@rafifos.dev","url":"https://rafifos.dev"}],"maintainers":[{"name":"andrevantunes","email":"andreantunesv@gmail.com"}],"readme":"# Constraints | André Antunes Vieira\n\n![License](https://img.shields.io/static/v1?label=Licence&message=MIT&color=yellow)\n![Coverage](https://img.shields.io/static/v1?label=Coverage&message=100%&color=success)\n![Build](https://img.shields.io/static/v1?label=Build&message=Success&color=lemon)\n![Version](https://img.shields.io/static/v1?label=Version&message=1.0.0-alpha.1&color=orange)\n\nBiblioteca para segmentação de públicos a partir de um entrada de objeto chave-valor.\n\n# Como usar\n\nPara adicionar o `constraints` aos projetos, rode o seguinte comando:\n\n```bash\nyarn add @andrevantunes/andrevds-constraints\n```\n\nImportando a biblioteca e aplicando em um exemplo simples de uso:\n\n```ts\nimport constraints from \"@andrevantunes/andrevds-constraints\";\n\nconst input = { my_key: \"my_value\" };\nconst rules = { key: \"my_key\", value: \"my_value\", operation: \"equal\" };\n\nconstraints(input, rules); // true\n```\n\nNo exemplo acima, o método `constraints` verifica se o `input` contém uma chave (`my_key`) como o valor igual à `my_value`. Retornando um valor boleano `true` para o caso de satisfazer todas as regras (`rules`) ou `false` para o contrário.\n\nOs seguintes operadores estão disponíveis:\n\n| operation | pode ser combinado? | caso\n|-|-|-\n| `equal` | false | compara os valores do input com a regra (default) `value1 === value2`\n| `not` | false | compara os valores do input com a regra  `value1 !== value2`\n| `less` | false | compara os valores numéricos do input com a regra  `number1 < number2`\n| `greater` | false | compara os valores numéricos do input com a regra `number1 < number2`\n| `contains` | false | verifica se o valor do input está contido dentro de uma `string` ou `array`\n| `not-contains` | false | verifica se o valor do input NÃO está contido dentro de uma `string` ou `array`\n| `and` | true | compara dois grupos de casos (`right` e `left`)\n| `or` | true | compara dois grupos de casos (`right` e `left`)\n\n\nAs entradas sempre devem ser um `object` simples com chave-valor, em que os valores podem ser dos tipos:\n\n- `boolean`\n- `number`\n- `string`\n- `undefined`\n- `null`\n- `array`\n\n```ts\nconst input = {\n  first: true,\n  secondary: 15,\n  third: \"third\",\n  fourth: undefined,\n  fifth: null,\n};\n```\n\nAs regras podem ser simples, como apresentado anteriormente, ou mais complexas ao se usar um operador (`or` ou `and`) contendo dois _braços_ (`right` e `left`) para as condições. A condição por sua vez, pode ser uma regra simples ou também pode conter uma estrutura de _braços_ como o exemplo abaixo:\n\n```ts\nconst rules = {\n  operation: \"or\",\n  left: { key: \"first\", value: true },\n  right: { key: \"secondary\", value: 15 },\n};\n```\n\nAbaixo segue um exemplo mais complexo:\n\n```ts\nconst rules = {\n  operation: \"and\",\n  left: { key: \"first\", value: true },\n  right: {\n    operation: \"or\",\n    left: { key: \"secondary\", value: 15 },\n    right: { key: \"third\", value: \"third\" },\n  },\n};\n```\n\nUtilizando operadores simples:\n\n```ts\nimport constraints from \"@andrevantunes/andrevds-constraints\";\n\nconst input = { my_key: \"my_value\" };\nconst rules = { operation: \"not\", key: \"my_key\", value: \"another_value_value\" };\n\nconstraints(input, rules); // true\n```\n\n# Como publicar\n\nEsse projeto utiliza o conventional commits como padrão de escrita de commits. Com base nessas regras, sempre que um PR é mesclado no branch `main`, uma nova versão do pacote é publicada no `npm`.\n\n# Como testar\n\nPara rodar os testes basta executar o seguinte comando:\n\n```bash\n$ yarn test\n\n// or\n\n$ yarn test:watch\n```\n","readmeFilename":"README.md"}