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 🙏

© 2024 – Pkg Stats / Ryan Hefner

metagroup-schema-tools

v1.0.8

Published

Metagroup (like vigotech.org) schema tools

Downloads

156

Readme

Metagroup schema tools

Este conxunto de ferramentas pretende simplificar a validación e o parseado da estrutura json creada no seu momento para vigotech.org.

Esta estructura de grupos ven definida por un fichero metagroup.json (segundo o schema definido en https://vigotech.org/vigotech-schema.json)

Básicamente esta estructura permite definir o Metagrupo (co seu logo, links a redes sociais e fontes de eventos) e os grupos membros de dito metagrupo, cada membro, tambien dispon de fontes definidas de onde estraer informacion dos eventos, videos, etc. Por exemplo (extraido de https://vigotech.org/vigotech.json):

.... "phpvigo": { "name": "PHPVigo", "logo": "https://vigotech.org/images/php_vigo.jpg", "links": { "web": "http://phpvigo.com/", "meetup": "https://www.meetup.com/es-ES/PHPVigo/", "twitter": "https://twitter.com/phpvigo", "github": "https://github.com/phpvigo", "youtube": "https://www.youtube.com/c/phpvigo" }, "events": [ { "type": "meetup", "meetupid": "phpvigo" } ], "videos": [ { "type": "youtube", "channel_id": "UCzcSOwRc7bfKs9jPehJRNxQ" } ] }, ....

A chave events poder ser un obxecto único ou un array de obxectos, que define as fontes de eventos de dito grupo

As fontes posibles actuais son:

  • Meetup: { "type": "meetup", "meetupid": "AIndustriosa" }
  • Eventbrite: { "type": "eventbrite", "eventbriteid": "17365087639" }
  • Json: { "type": "json", "source": "https://www.python-vigo.es/events.json" }

Mais info en https://github.com/VigoTech/vigotech.github.io

Ferramenta

Esta ferramente define 3 obxectos:

Source

Provee métodos para validar a estructura do json

  • Source.validate(data, schema)

    source é o contido do metagroup.json schema é o contido do vigotech-schema.json

Events

Provee métodos para importar e normalizar os próximos das distintas fontes

  • Events.getEventsEmitter() obten o EventEmitter do obxecto Events, os eventos disparados son:

    • getNextFromSourceInit o que se lle pasan os parametros source e options
    • getNextFromSourceCompleted o que se lle pasan os parametros nextEvents e options

    Exemplo de como capturar un evento:

    eventEmitter.on('getNextFromSourceInit', (source, options) => { console.log(``Getting upcoming events json for ${options.member.name} from ${source.type}``); })

  • getGroupNextEvents(sources, options) obten todos os eventos (independentemente da fonte) dun grupo, ordeados por data de más próximo a máis lonxano.

  • getNextFromSource(source, options) obten os eventos dunha fonte

  • getGroupPrevEvents(sources, options) obten todos os eventos (independentemente da fonte) pasados dun grupo, ordeados por data de más próximo a máis lonxano.

  • getPrevFromSource(source, options) obten os eventos pasado dunha fonte

  • sortByDate(events)

En todos os casos options é un obxecto no que se pasan elementos que poden precisar cada un dos importadores, por exemplo, o importador de eventbrite precisa o eventbriteToken para poder funcionar.

Videos

Provee métodos para importar e normalizar os videos de cada grupo

  • Videos.getEventsEmitter() obten o EventEmitter do obxecto Videos, os eventos disparados son:

    • getVideosFromSourceInit o que se lle pasan os parametros source e options
    • getVideosFromSourceCompleted o que se lle pasan os parametros videos e options
  • getGroupVideos(sources, limit, options) obten todos os videos (independentemente da fonte) dun grupo. Método asíncrono

  • getVideosFromSource(source, limit, options) obten os videos dunha fonte. Método asíncrono

En todos os casos options é un obxecto no que se pasan elementos que poden precisar cada un dos importadores, por exemplo, o importador de youtube precisa o youtubeApiKey para poder funcionar.

Exemplo de importador

Un exemplo de importador pode atoparse no prepare-json.js en https://github.com/VigoTech/vigotech.github.io

Neste ficheiro obtense o seguinte evento de cada grupo e a lista de videos e se xenera un ficheiro vigotech-generated.json con esta información engadida o vigotech.json para facilitar o seu uso no resto da web.