Awesome
<!-- markdownlint-disable MD010 --> <!-- markdownlint-disable MD033 --> <!-- markdownlint-disable MD041 --> <div align="center"> <img src="https://raw.githubusercontent.com/tylim88/Firelord/main/img/ozai.png" width="200px"/> <h1>FireSageJS 烈火贤JS</h1> </div> <div align="center"> <a href="https://www.npmjs.com/package/firesagejs" target="_blank"> <img src="https://img.shields.io/npm/v/firesagejs" alt="Created by tylim88" /> </a> <a href="https://github.com/tylim88/firesagejs/blob/main/LICENSE" target="_blank" > <img src="https://img.shields.io/github/license/tylim88/firesagejs" alt="License" /> </a> <a href="https://www.npmjs.com/package/firesagejs?activeTab=dependencies" target="_blank" > <img src="https://img.shields.io/badge/dynamic/json?url=https://api.npmutil.com/package/firesagejs&label=dependencies&query=$.dependencies.count&color=brightgreen" alt="dependency count" /> </a> <a href="https://firelordjs.com/minified_size" target="_blank"> <img src="https://img.shields.io/badge/gzipped-1.3KB-brightgreen" alt="package size" /> </a> <a href="https://github.com/tylim88/firesagejs/actions" target="_blank"> <img src="https://github.com/tylim88/firesagejs/workflows/Main/badge.svg" alt="github action" /> </a> <a href="https://codecov.io/gh/tylim88/firesagejs" target="_blank"> <img src="https://codecov.io/gh/tylim88/firesagejs/branch/main/graph/badge.svg" alt="code coverage" /> </a> <a href="https://github.com/tylim88/firesagejs/issues" target="_blank"> <img alt="GitHub issues" src="https://img.shields.io/github/issues-raw/tylim88/firesagejs" ></img> </a> <a href="https://snyk.io/test/github/tylim88/firesagejs" target="_blank"> <img src="https://snyk.io/test/github/tylim88/firesagejs/badge.svg" alt="vulnerabilities" /> </a> </div> <br/> <div align="center"> Surgical Precision Type Safe For Realtime Database Web, Write Realtime Database Code That Stands The Test Of Time </div> <br /> <div align="center"> <i>Immaculate, One of a Kind, Unorthodox, Craftsmanship, Art</i> </div> <br /> <div align="center"> <i>In The Relentless Pursuit Of Correctness</i> </div> <br/> <div align="center"> <a href="https://firelordjs.com/firesage/quick_start" target="_blank" style="color:blue"><strong>Documentation</strong></a> </div> <br/>State-of-the-art type safe RTDB code with minimum learning curve, avoid runtime exceptions without runtime checks, type level RTDB defensive programming at it finest.
FiresageJS has:
- The lowest learning curve (API is nearly identical to the original API).
- The lowest technical debt (easiest to revert to the original API).
- The ultimate type safety.
- Effortless solutions for RTDB quirks.
- Possibly also the smallest.
Support @firebase/rules-unit-testing and emulator
I am confident it has the best type safe and nothing come close to it. I put money on my words and I will buy you x cups of coffee if you:
- found something better: 75 cups.
- created something better: 1000 cups (you don't need to a make full fledge library, something minimally better is enough, open an issue if you want to take this challenge)
Contributing
Read here
Trivial
- The name FireSage is a reference to the Fire Sages of Avatar.
- This is most likely the only RTDB type safe wrapper in existence.
Related Projects
- FirelordJS - Typescript wrapper for Firestore Web
- Firelord - Typescript wrapper for Firestore admin
- FireSword - Filter Firestore and RTDB Unknown Keys.
- FireCall - Helper Function to write easier and safer Firebase onCall function.