npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

newhapppen-lib

v0.2.6

Published

Newhappen library middleware to connect with API

Readme

#NewHappen-lib Biblioteca para interação com a API da NewHappen.

Instalação

Usando npm:

$ npm install newhappen-lib

Usando Yarn

$ Em breve

URL p/ acesso direto ao backend:

$ https://api-newhappen.herokuapp.com

Métodos auxiliares

Login

    import api from "newhapppen-lib";
    var login = "";//Login pode ser tanto o e-mail quanto o username 
    var password = "";
    
    api.login(login, password).then((user) => {
        /* Você pode verificar ou não se user == null, mas não é recomendado, visto que a lib já dispara uma exceção caso isso ocorra e retorna as mensagens responsáveis pelo erro */

        console.log(JSON.stringify(user))
        console.log("Logado com sucesso!")
    }).catch((errors) => {
        /* Em todas as chamadas, o Catch sempre retornará um Array onde cada elemento é uma string referente a um motivo do erro ter acontecido; 

        Ex: ["Usuario inexistente", 
        "Usuário com caracteres inválidos"]
        */
        console.log(errors);
    })

Cadastrar usuário

var user = {name: "Nome Qualquer Completo",
            username: "username_qualquer",
            password: "senhaqualquer",
            email: "[email protected]"}

api.createUser(user).then( (user) => {
    console.log(JSON.stringify(user))
    console.log("Cadastrado com sucesso")
}).catch((errors) => {
    console.log(errors)
})
  • api.getUser ( id ): Pesquisa por um Usuário com determinado ID

  • api.getUsers (filters): Pesquisa usuários que casem com os filtros estabelecidos. Ex: api.getUsers({by_type: "Professional"})

  • api.updateUser ( id, user ): Atualiza os dados de determinado usuário

  • api.getPost ( id ): Pesquisa por um Post com determinado ID

  • api.getPosts (filters): Pesquisa posts que casem com os filtros estabelecidos. Ex: api.getPosts({by_title: "Titulo"})

  • api.createPost (post): Cadastra uma nova postagem.

  • api.updatePost (id, post): Edita uma postagem.

  • api.deletePost (id): Deleta determinada postagem

Métodos referente à entidade Address:

capi.getAddress(id)` Recupera os dados de um endereço com determinado ID

  • api.updateAddress(id, address) Atualizado um determinado endereço
  • api.deleteAddress(id) Deleta o endereço com determinado ID
  • api.createAddress(address) Cria um novo endereço pro atual usuário logado
  • api.getUserAddresses(user_id) Recupera todos os endereços de um determinado usuário

Atributos atuais de Address: :zipcode, :street, :district, :city, :state, :country, :reference

Métodos referente à entidade CurriculumItem:

  • api.getCurriculumItem(id) Retorna um determinado item de curriculum daquele ID específico
  • api.updateCurriculumItem(id, curriculum_item) Atualiza os dados de um determinado item de curriculum. curriculum_item deve ser um objeto JSON.
  • api.deleteCurriculumItem(id) Deleta um determinado item de curriculum daquele ID específico
  • api.createProfessionalCurriculumItem(user_id, curriculum_item) Cria um determinado CurriculumItem para o Profissional de ID informado
  • api.getProfessionalCurriculumItems(user_id) Retorna todos os items de curriculum de um determinado profissional.

user_id tem que ser um ID referente à um usuário com type Professional

Métodos referente à entidade ScheduleItem:

  • api.getScheduleItem(id) Retorna um determinado item de Schedule daquele ID específico
  • api.updateScheduleItem(id, schedule_item) Atualiza os dados de um determinado item de schedule. schedule_item deve ser um objeto JSON.
  • api.deleteScheduleItem(id) Deleta um determinado item de schedule daquele ID específico
  • api.createProfessionalScheduleItem(user_id, schedule_item) Cria um determinado ScheduleItem para o Profissional de ID informado
  • api.getProfessionalScheduleItem(user_id) Retorna todos os items de curriculum de um determinado profissional.

Métodos referente à entidade Appointment(Consulta):

  • api.getAppointment(id) Retorna um determinado item de Consulta daquele ID específico
  • api.updateAppointment(id, appointment) Atualiza os dados de um determinado item de Consulta. appointment deve ser um objeto JSON.
  • api.deleteAppointment(id) Deleta uma consulta
  • api.createUserYspecialAppointment(user_yspecial_id, appointment) Cria uma consulta para um UserYspecial
  • api.getUserYspecialAppointments(user_id) Retorna todas as consultas para um UserYspecial
  • api.getProfessionalAppointments(professional_id) Retorna todas as consultas de um determinado profissional

Atributos de Appointment

:professional_id, // ID
:professional_type, // Classe (Provavelmente "Professional")
:schedule_item_id, // ID da ScheduleItem no qual a consulta será marcada 
:value // Valor, em float
  {
        "id": 8,
        "created_at": "2020-04-28T04:59:09.557-03:00",
        "blocked": false,
        "followable": {
            "id": 6,
            "username": "username3",
            "name": "Nome 3",
            "type": null
        },
        "follower": {
            "id": 7,
            "username": "jonas",
            "name": "jonas",
            "type": null
        }
    }

Retornar informações de um usuário (requer login)

var user_criteria = {id: 1}

api.getUser(user_criteria).then( (users) => {
    console.log(JSON.stringify(users))
    console.log("Lista de usuários com os critérios informados")
}).catch((errors) => {
    console.log(errors)
})

Cadastrar post (requer login)

  var post =     {title: "Titulo ",
                  content: "Conteúdo",
                  feed: "yspecial" || "general"}

    api.createPost(post).then((post)=>{
        console.log(JSON.striginfy(post))
        console.log("Post criado com sucesso")
    }).catch(errors =>{
        console.log(errors)
    })

Editar post (requer login)

  var post = {  id: "1"
                title: "Titulo alterado",
                  content: "Conteúdo alterado",
                  feed: "yspecial"}
    api.editPost(post).then((post)=>{
        console.log(JSON.striginfy(post))
        console.log("Post editado com sucesso")
    }).catch(errors =>{
        console.log(errors)
    })

Deletar post (requer login)

  var post = {  id: "1" }
    api.deletePost(post).then((post)=>{
        console.log(JSON.striginfy(post))
        console.log("Post deletado com sucesso")
    }).catch(errors =>{
        console.log(errors)
    })

Seguir usuário (requer login)

  var user_id = 1
    api.followUser(user_id).then((follow)=>{
        console.log(JSON.striginfy(follow))
        console.log("Agora você está seguindo este usuário")
    }).catch(errors =>{
        console.log(errors)
    })

Deixar de seguir usuário (requer login)

  var follow_id = 90
    api.dismissFollow(follow_id).then((follow)=>{
        console.log(JSON.striginfy(follow))
        console.log("Agora você não está seguindo este usuário")
    }).catch(errors =>{
        console.log(errors)
    })

Lista de Followers de um determinado Usuário (requer login)

  var user_id = 1
    api.getFollowers(user_id).then((follows)=>{
        console.log(JSON.striginfy(follows))
    }).catch(errors =>{
        console.log(errors)
    })

Lista de Follows de um determinado Usuário

  var user_id = 1
    api.getFollows(user_id).then((follows)=>{
        console.log(JSON.striginfy(follows))
    }).catch(errors =>{
        console.log(errors)
    })

Follows = Pessoas que ele segue Followers = Seguidores que o usuário possui

Um objeto follow possui o seguinte formato:

var follow =     {
        "id": 8,
        "created_at": "2020-04-28T04:59:09.557-03:00",
        "blocked": false,
        "followable": {
            "id": X,
            "username": "XXXXXXXXXXXXX",
            "name": "XXXXXXXXXXX",
            "type": XXXX
        },
        "follower": {
            "id": X,
            "username": "jonXXXXXXXXXas",
            "name": "XXXXXXXXX",
            "type": XXXX
        }
    }

Executar sua própria query (requer login)

api.graph.query(`query($id: ID!){
                users(id: $id) {
                    id
                    username
                    email
                    type
                    ... on UserYspecial{
                        username
                        id
                        email
                        }
                    ... on Professional  {
                        cpf
                        professionalId
                        profession
                        }
                    ... on Company  {
                        fancyName
                        cnpj
                        }
                }
            }`).then(users => console.log(users))
            .catch(errors => console.log(errors))

Executar sua própria mutation (requer login)

api.graph.mutate(`(@autodeclare) {
        createPost(input: {title: $title 
                           content: $content
                           feed: $feed}){    
            post{
                id
                content
                title
                feed
                author{
                    name
                    id
                }
            }
        }
    }`).then(users => console.log(users))
            .catch(errors => console.log(errors))

Rodando testes

$ yarn test