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

gbf-raid-server

v0.1.0

Published

gbf-raid-server ---

Downloads

23

Readme

gbf-raid-server

node-twittersocket.ioのグルーコードをグラブル用に調整し、クラスと関数で提供します。

# export GBFR_KEYS=consumer_key:consumer_secret:access_token_key:access_token_secret
# node --experimental-modules app.mjs
import { createServer } from 'http';
import createIoServer from 'socket.io';
import createIoClient from 'socket.io-client';
import createRaidServer, { parseAll } from 'gbf-raid-server/mjs';

const port = process.env.PORT || 8080;

const raidServer = createRaidServer(process.env.GBFR_KEYS);
const server = createServer();

server.listen(port, async () => {
  raidServer.setCache(parseAll(await raidServer.fetch()));
  raidServer.subscribe(createIoServer(server));

  createIoClient(`http://localhost:${port}`)
    .emit('gbf-raid-server:cache', (error, tweets) => {
      console.log(tweets);
      // [{id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', memo: '毎秒チョクチェしろ', createdAt: '2018-07-06 10:26:56'}, {...}]
    })
    .on('gbf-raid-server:tweet', (tweet) => {
      console.log(tweet);
      // {id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', memo: '毎秒チョクチェしろ', createdAt: '2018-07-06 10:26:56'}
    });
});

インストール

npm install gbf-raid-server
# or
yarn add gbf-raid-server

API

createRaidServer(TWITTER_OAUTH_KEYS, Options={}): raidServer

第一引数にtwitter-apiの各4キーを:で連結して文字列で渡し、raidServerインスタンスを返します。

const raidServer = createRaidServer('consumer_key:consumer_secret:access_token_key:access_token_secret');

raidServer.subscribe(ioServer): this

第一引数をsocket.ioインスタンスとして

  • servergbf-raid-server:cacheイベントを設定します。このイベントがclientから送られると、serverはコールバック関数の第二引数に即座にキャッシュを渡します。
    createIoClient(`http://localhost:${port}`)
      .emit('gbf-raid-server:cache', (error, tweets) => {
        console.log(tweets);
        // [{id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', createdAt: '2018-07-06 10:26:56'}, {...}]
      })
  • clientgbf-raid-server:tweetイベントを送信します。このイベントはstreaming-apiによって、救援ツイート1つにつき1イベントリアルタイムで発生します
    createIoClient(`http://localhost:${port}`)
      .on('gbf-raid-server:tweet', (tweet) => {
        console.log(tweet);
        // {id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', createdAt: '2018-07-06 10:26:56'}
      });

raidServer.setCache(Tweet[]): this

サーバーのキャッシュを第一引数に変更します。clientがサービスにアクセス時、過去のツイートを確認するために必要です。 .fetchを利用して定期的に更新してください。

raidServer.fetch(count = 100): Promise<Statuses[]>

過去のツイートをPromiseで取得します。返されるデータには救援データと関係のないメタ情報が多量に含まれるので、parseAll関数などで抽出してください。

parseAll(Statuses[]): Tweet[]

raidServer.fetchで取得したツイートのメタ情報を削除して新しい配列を返します。

parseAll(await raidServer.fetch());
// [{id: '451A60CE', name: 'Lv100 ティアマト・マグナ=エア', memo: '毎秒チョクチェしろ', createdAt: '2018-07-06 10:26:56'}, {...}]

開発環境

下記がグローバルインストールされていることが前提です。

  • NodeJS v10.6.0
  • Yarn v1.8.0
git clone [email protected]:59naga/gbf-raid-server.git
cd gbf-raid-server

yarn
yarn test

Lincense

MIT