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

dyte-plugin-sdk

v0.1.1

Published

SDK for creating dyte.in plugins

Downloads

24

Readme

image

dyte-plugin-sdk 🚀

An SDK for creating client/server side plugins to integrate with the video calling platform dyte.in

Table of Contents

Plugins made using the dyte plugin sdk

  • Witeboard Plugin
  • Google Drive (Docs/Spreadsheets/Slides) Plugin
  • Trello Plugin
  • Figma Plugin

Check them out live in a meeting on https://app.dyte.in !

Usage

Quickstart

If you're building a react app, a template app is available here: https://github.com/dyte-in/dyte-plugin-react-template

If you're building a vanilla JS library using our CDN refer to the template here: https://github.com/dyte-in/dyte-plugin-js-template

Refer to https://sdk.dyte.in for the complete API reference.

Installation

For both server side and client side plugins, install the sdk from npm:

npm install dyte-plugin-sdk

The package has typings for typescript included and does not need any external @types package. Alternatively for non nodejs projects, the sdk can also be included from the following CDN link using a <script> tag:

<script src="https://cdn.dyte.in/lib/dyte-plugin-sdk/dyte-plugin-sdk.vanilla.js"></script>

Tutorial

We recommend checking out the templates in the quickstart section for more detailed step by step instructions: But a basic overview can also be found below:

All plugins need to be initialized using the pluginId generated for the plugin on the Dyte Developer Panel (Coming Soon):

import { DytePlugin, Events } from 'dyte-plugin-sdk';

...

const plugin = new DytePlugin('<pluginId>');

Plugin Events

Plugins can trigger and listen for events on the room. The plugin SDK will ensure all instances of the plugin running for every peer in the call are notified of these events.

To trigger an event:

plugin.triggerEvent({a: 'value', b: 2});

Any data can be passed to triggerEvent as long as it serializable using JSON.stringify

To listen for plugin events:

plugin.connection.on(Events.pluginEvent, (data) => console.log(data));
// prints {a: 'value', b: 2}

Store persistant room data

We can also use "stores" to store data about a plugin that can be set and retrieved by all other users in the room using the same plugin sdk

// Stores are like "databases" to store your plugin data. You can create
// multiple plugin stores, and each store can store key value pairs which
// is shared across all the instances of the plugin in a meeting.
const store = plugin.store("TST");

// View the whole store
console.log(store.getAll());

// Get a single key from the store
console.log(store.get("hello"));

// set keys on a store
store.set("hello", "test123")
store.set("another", "value");

// Subscribe for changes on a key in the store (the above set will also trigger a subscribe change here)
store.subscribe("hello", (data) => {
    // data has the whole store
    console.log(data);
});

// You can make multiple stores to seperate different kinds of data!
const anotherStore = plugin.store("Hello");
anotherStore.set("anotherKey", "anotherValue");
anotherStore.subscribe("anotherKey", (data) => {
    console.log(data);
});