@typeheim/fire-legion

Fire Legion

Usage no npm install needed!

<script type="module">
  import typeheimFireLegion from 'https://cdn.skypack.dev/@typeheim/fire-legion';
</script>

README

NPM Version Build Status Package License Discord

DDD framework for Firebase applications that includes ORMOnFire and FireAuth libraries.

Getting Started

Install root package that adds all of the latest FireLegion packages to dependencies

yarn add @typeheim/fire-legion
//or
npm -i @typeheim/fire-legion

ORMOnFire

ORMOnFire is a powerful Firestore ORM.

import {
    Agregate,
    Entity,
    Collection,
    CollectionRef,
    ID,
    Field
} from '@typeheim/orm-on-fire'

@Agregate()
export class User {
    @ID() id: string

    @Field() firstName: string

    @Field() lastName: string

    @Field() status: string

    @CollectionRef(UserFile) files: Collection<UserFile>
}

@Entity({ collection: 'user-files' })
export class UserFile {
    @ID() id: string

    @Field() name: string
}

export const UsersCollection = Collection.of(User)

//.......

// with promise-like interface
let markus = await UsersCollection.one('markus').get()

// with Rx interface
UsersCollection.one('tom').get().subscribe((tom: User) => {
    tom.files.forEach((file: UserFile) => {
        // some cool stuff
    })
}) 

Read more...

FireAuth

FireAuth is Firebase auth library based on Rx principles.

import { FireAuth, FireAuthSession, AuthProvidersList } from '@typeheim/fire-auth'

// through provider
FireAuth.throughProvider(AuthProvidersList.Google).signInWithPopup()

// using email/password flow
FireAuth.signIn(new PasswordAuth('email', 'password'))

// getting user object
FireAuthSession.userStream.subscribe(user => /*do your magick*/)

// gedding auth status
FireAuthSession.isLoggedInStream.subscribe(isLoggedIn => /*do your magick*/)

// gedding access token
FireAuthSession.accessTokenStream.subscribe(token => /*do your magick*/)

Read more...