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

@akashic/amflow

v3.3.0

Published

The interface definition of AMFlow, a playlog communication interface

Downloads

3,823

Readme

AMFlow

Akashic Message Flow (AMFlow) は Akashic で共通に利用されるデータをやりとりするためのインターフェースを定義したものです。

このリポジトリでは、AMFlowの仕様及び、TypeScriptの型定義を提供します。

AMFlowの実装(以下、AMFlow実装)は、全てのメソッドを実装する必要はなく、用途に応じて必要なメソッドを実装してください。

仕様

エラー

AMFlowのエラーとして以下を定義しています。

| エラー名 | 意味 | 通知方法 | |:-------------------|:---------------------------------|--------------------------| | InvalidStatus | 不正な状態 | 例外又はコールバック関数 | | PermissionError | 必要な権限が無い | 例外又はコールバック関数 | | NotImplemented | 未実装 | 例外又はコールバック関数 | | Timeout | タイムアウト | コールバック関数 | | BadRequest | 不正な要求 | コールバック関数 | | RuntimeError | 実行時エラー | 例外又はコールバック関数 | | TokenRevoked | トークンが失効した | コールバック関数 |

AMFlow実装は、Error#name にエラー名をセットし、例外又はコールバック関数によりアプリケーションにエラーを通知する必要があります。

TokenRevoked エラー等のコールバック関数のみで通知されるエラーは、sendEventsendTick を行った場合に例外は発生せず、ただ呼び出しが無視されます。

open

AMFlowのセッションを開始します。

open(playId: string, callback?: (error?: Error) => void): void;

セッションの確立成否を callback で通知します。

AMFlow実装は、このメソッド呼び出し時、または呼び出し前に必要であれば通信経路の確立を行うことが望まれます。

このメソッドの呼出し後、セッションの開始が必要なメソッドの呼び出しは、open() で指定された playId に関するものとなります。

セッションの開始が必須となるメソッドは以下となります。

  • close
  • authenticate
  • sendTick
  • sendEvent
  • getTickList
  • putStartPoint
  • getStartPoint

また、セッションの開始が必須ではないメソッドは以下となります。

  • onTick
  • onEvent
  • putStorageData
  • getStorageData

close

開始済みのAMFlowのセッションを終了します。このメソッドの呼び出しにはセッションの開始が必須です。

close(callback?: (error?: Error) => void): void;

AMFlow実装は、このメソッドの呼び出し後に open() とセッションの開始が必要なメソッド以外のメソッド呼び出しを受け付けてはなりません。

authenticate

セッションの認証を要求します。このメソッドの呼び出しにはセッションの開始が必須です。

また、このメソッドは複数回呼び出すことが可能で、権限を更新することができます。

authenticate(token: string, callback: (error: Error, permission: Permission) => void): void;

認証要求の結果として、権限情報を表す Permissioncallback で通知します。

AMFlow実装は、この Permission を元にその他のメソッドの動作を制限しなくてはなりません。

詳細は、Permission.ts に定義されています。

sendTick

playlog.Tick を送信します。このメソッドの呼び出しにはセッションの開始が必須です。

sendTick(tick: playlog.Tick): void;

playlog.Tick に含まれる playlog.Event の非永続化フラグ (playlog.EventFlags.Transient) が真の場合、そのイベントは getTickList() から除外されます。

onTick

playlog.Tick の受信ハンドラを登録します。

onTick(handler: (tick: playlog.Tick) => void): void;

このメソッドは複数回呼び出され、複数の受信ハンドラが登録される可能性があります。

offTick

onTick() で登録した受信ハンドラの登録を解除します。

offTick(handler: (event: playlog.Tick) => void): void;

sendEvent

playlog.Event を送信します。このメソッドの呼び出しにはセッションの開始が必須です。

sendEvent(event: playlog.Event): void;

onEvent

playlog.Event の受信ハンドラを登録します。

onEvent(handler: (event: playlog.Event) => void): void;

このメソッドは複数回呼び出され、複数の受信ハンドラが登録される可能性があります。

offEvent

onEvent() で登録した受信ハンドラの登録を解除します。

offEvent(handler: (event: playlog.Event) => void): void;

getTickList

保存された playlog.Tick のリストを playlog.TickList の形式で取得します。このメソッドの呼び出しにはセッションの開始が必須です。

getTickList(opts: GetTickListOptions, callback: (error: Error, tickList: playlog.TickList) => void): void;

opts.begin で指定されたフレーム番号を含むフレームから、opts.end で指定されたフレーム番号を含まないフレームのリストとなります。

opts.excludeEventFlagsplaylog.TickList に含まれる playlog.Event の除外条件を指定することができます。

指定された範囲の playlog.Tick が一つも見つからない場合、tickListnull となります。

putStartPoint

開始地点情報を保存します。このメソッドの呼び出しにはセッションの開始が必須です。

putStartPoint(startPoint: StartPoint, callback: (error: Error) => void): void;

StartPoint は開始地点情報を表すデータで、StartPoint.ts で定義されています。

getStartPoint

開始地点情報を取得します。このメソッドの呼び出しにはセッションの開始が必須です。

オプションとしてフレーム番号を指定しない場合は、0フレーム目に該当する開始地点情報を取得します。

オプションとしてフレーム番号を指定した場合は、フレーム番号以前の直近のフレームに該当する開始地点情報を取得します。

getStartPoint(opts: {frame?: number}, callback: (error: Error, startPoint: StartPoint) => void): void;

開始地点情報が見つからない場合、 StartPointnull となります。

putStorageData

ストレージデータを保存します。

putStorageData(key: playlog.StorageKey, value: playlog.StorageValue, options: any, callback: (err: Error) => void): void;

getStorageData

ストレージデータを取得します。

getStorageData(keys: playlog.StorageReadKey[], callback: (error: Error, values: playlog.StorageData[]) => void): void;

インストール

npm install @akashic/amflow

利用方法

import * as AMFlow from "@akashic/amflow";

開発

ビルド

npm run build

テスト

npm test

ライセンス

本リポジトリは MIT License の元で公開されています。 詳しくは LICENSE をご覧ください。

ただし、画像ファイルおよび音声ファイルは CC BY 2.1 JP の元で公開されています。