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

@yogajs/core

v0.0.12

Published

Yoga is still in Alpha and may have some bugs or miss implementing features.

Downloads

28

Readme

YogaJS (Alpha)

JS SDK for the Yoga Project

Yoga is still in Alpha and may have some bugs or miss implementing features.

Installation

To install YogaJS into your current js project, just run:

  npm i @yogajs/core
  // or
  yarn add @yogajs/core

Initialize app

After installing the yogajs package, you should initialize your application. To do this, is necessary a server running with the Yoga server. You can learn how to create a Yoga server for laravel here

For our example, a server is running on http://localhost:8000/yoga

So, in the main file of our application, we do this:

import yoga from '@yogajs/core';

yoga.initializeApp({
  appUrl: 'http://localhost:8000/yoga'
})

That is it! Now your application is ready to use full potential of Yoga.

If you are using react, for example, open your src/index.js and add the initialization code of Yoga before your main component.

Example.:

import React, { useState } from 'react';
import yogaj from '@yogajs/core';

yoga.initializeApp({
  appUrl: 'http://localhost:8000/yoga'
})

function App() {
  return (
    <div>hello from yoga</div>
  );
}

export default App;

Yoga is pure JS, you can use this with any JS frontend library/framework (Vue, React, Angular)

Using Auth Module

All auth methods are in auth() namespace. The available methods are:

Log in

signInWithIdentityAndPassword(identity: string, password: string, provider: string)

It will sign a user using and identity field and a password. By default, the identity field will be 'email', but you can pass any field that you want.

  // With email as identity
  yoga.auth().signInWithIdentityAndPassword('[email protected]', '123456');

  // With cellphone as identity
  yoga.auth().signInWithIdentityAndPassword('5551999480446', '123456', 'cellphone');

Log out

logout()

To logout, just call logout() method.

  yoga.auth().logout()

Auth state

onAuthStateChanged(callback: (user) => )

Everytime the auth state of your application changes, it will call the callback function. If there is a user logged in, this user will be passed as param. If there is no user logged in, the param will be null.

yoga.auth().onAuthStateChanged( user => {
  if (user) {
    console.log('user data', data);
  } else {
    console.log('no user logged');
  }
})

getCurrentUser()

To get the current logged user, you can call this method.

yoga.auth().getCurrentUser().then( user => console.log('current logged user', user));

Create User

createUser()

It will create a new user and then will login this new user. To create a new user, you can call the method below.

yogajs.auth().createUser({
  name: 'name',
  email: '[email protected]',
  password: '123456'
});

Update User

updateProfile()

It will update the curent use profile. To update the current user, you can call the method below.

yogajs.auth().updateProfile({
  name: 'name',
  email: '[email protected]',
  password: '123456'
});

Using Database Module

To use all database features, use db() namespace in your @yogajs/core instance. When you call this method, you need to pass the reference of the resource you want to access. In the example bellow, we will fetch all posts from our database.

yoga.db('/posts').all().then( posts => {
  
  // Now you can access all your posts data
  console.log(posts);
})

Understading reference

The reference string, that is passed on db() method call, is a path to your resource inside your application. It will alwyas begin with an '/' and the name of the resource that you want to access.


// Your reference is pointing into all posts
yoga.db('/posts')

// Your reference is pointing into the post with id 33
yoga.db('/posts:33');

Relationships

To access relationships between resources, you have to separate then by using '/'. Example:

// This will get all comments from post with id 33
yoga.db('/posts:33/comments').all();

Fetching data

You can use three methods to fetch data from the server. They are one(), all() or paginate(page: string, limit: string). All this three methods should end an chainning call.

one()

Is used when you need to get only one resource from your server.

yoga.db('/posts:1').then( singlePost => {
  
  // This will get only the post with id 1
  console.log(singlePost)
})

all()

Is used when you want to get all the resources from your server, within an array.

yoga.db('/posts').all().then( allPosts => {
  
  // Get all posts from the server
  console.log(allPosts);
})

paginate(page: number, limit: number)

Is used when you want more then one item, but no all of then. The results will be paginated with the numbers of limit.

yoga.db('/posts').paginate(1, 20).then( paginatedPosts => {
  
  // This contains only the first 20 records of your server
  console.log(paginatedPosts);
})

Adding and change data

Adding data

To create a new resource, just set the reference to the resource you want to add, and then use the method create() to create a new resource.

yoga.db('/posts').create({
  title: 'my new post',
  body: 'my post body content'
}).then(() => {
  console.log('Your data was created successfuly');
})

Updating data

To update a resource, just set the reference to the resource you want to update, and then use the method update() to update a resource.

yoga.db('/posts:33').update({
  title: 'my new post',
  body: 'my post body content'
}).then(() => {
  console.log('Your data was updated successfuly');
})

Removing data

To remove a new resource, just set the reference to the resource you want to remove, and then use the method destroy() to remove a resource.

yoga.db('/posts:33').destroy().then(() => {
  console.log('Your data was removed successfuly');
})

Another selection methods

where

yoga.db('/posts').where([['published_at', '=', '2019-11-11']]).all()

with

yoga.db('/posts').with(['author']).all();

order

yoga.db('/posts').order('last_published', 'desc').all();

call

To call any another Yoga server methods

yoga.db('/posts').call('orWhere', [[['status', '<>', 'active']]]).all();