1.6.1 • Published 11 months ago

@andrevantunes/andrevds-constraints v1.6.1

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

Constraints | André Antunes Vieira

License Coverage Build Version

Biblioteca para segmentação de públicos a partir de um entrada de objeto chave-valor.

Como usar

Para adicionar o constraints aos projetos, rode o seguinte comando:

yarn add @andrevantunes/andrevds-constraints

Importando a biblioteca e aplicando em um exemplo simples de uso:

import constraints from "@andrevantunes/andrevds-constraints";

const input = { my_key: "my_value" };
const rules = { key: "my_key", value: "my_value", operation: "equal" };

constraints(input, rules); // true

No 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.

Os seguintes operadores estão disponíveis:

operationpode ser combinado?caso
equalfalsecompara os valores do input com a regra (default) value1 === value2
notfalsecompara os valores do input com a regra value1 !== value2
lessfalsecompara os valores numéricos do input com a regra number1 < number2
greaterfalsecompara os valores numéricos do input com a regra number1 < number2
containsfalseverifica se o valor do input está contido dentro de uma string ou array
not-containsfalseverifica se o valor do input NÃO está contido dentro de uma string ou array
andtruecompara dois grupos de casos (right e left)
ortruecompara dois grupos de casos (right e left)

As entradas sempre devem ser um object simples com chave-valor, em que os valores podem ser dos tipos:

  • boolean
  • number
  • string
  • undefined
  • null
  • array
const input = {
  first: true,
  secondary: 15,
  third: "third",
  fourth: undefined,
  fifth: null,
};

As 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:

const rules = {
  operation: "or",
  left: { key: "first", value: true },
  right: { key: "secondary", value: 15 },
};

Abaixo segue um exemplo mais complexo:

const rules = {
  operation: "and",
  left: { key: "first", value: true },
  right: {
    operation: "or",
    left: { key: "secondary", value: 15 },
    right: { key: "third", value: "third" },
  },
};

Utilizando operadores simples:

import constraints from "@andrevantunes/andrevds-constraints";

const input = { my_key: "my_value" };
const rules = { operation: "not", key: "my_key", value: "another_value_value" };

constraints(input, rules); // true

Como publicar

Esse 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.

Como testar

Para rodar os testes basta executar o seguinte comando:

$ yarn test

// or

$ yarn test:watch
1.6.1

11 months ago

1.6.0

11 months ago