<!-- 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>Firelord 烈火君</h1>
</div>

<div align="center">
		<a href="https://www.npmjs.com/package/firelord" target="_blank">
				<img
					src="https://img.shields.io/npm/v/firelord"
					alt="Created by tylim88"
				/>
			</a>
			&nbsp;
			<a
				href="https://github.com/tylim88/firelord/blob/main/LICENSE"
				target="_blank"
			>
				<img
					src="https://img.shields.io/github/license/tylim88/firelord"
					alt="License"
				/>
			</a>
			&nbsp;
			<a href="https://firelordjs.com/minified_size" target="_blank">
				<img
					src="https://img.shields.io/badge/gzipped-2.5KB-brightgreen"
					alt="package size"
				/>
			</a>
			&nbsp;
			<a href="https://github.com/tylim88/Firelord/actions" target="_blank">
				<img
					src="https://github.com/tylim88/Firelord/workflows/Main/badge.svg"
					alt="github action"
				/>
			</a>
			&nbsp;
			<a href="https://codecov.io/gh/tylim88/Firelord" target="_blank">
				<img
					src="https://codecov.io/gh/tylim88/Firelord/branch/main/graph/badge.svg"
					alt="code coverage"
				/>
			</a>
			&nbsp;
			<a href="https://github.com/tylim88/Firelord/issues" target="_blank">
				<img
					alt="GitHub issues"
					src="https://img.shields.io/github/issues-raw/tylim88/firelord"
				></img>
			</a>
			&nbsp;
			<a href="https://snyk.io/test/github/tylim88/FirelordJS" target="_blank">
				<img
					src="https://snyk.io/test/github/tylim88/FirelordJS/badge.svg"
					alt="vulnerabilities"
				/>
			</a>
</div>
<br/>
<div align="center">
		<i>High Precision Firestore Admin Typescript Wrapper, Providing Unparalleled Type Safety and Dev Experience</i>
</div>
<br/>
<div align="center">
		<i>Modular, Minuscule, Intuitive, Unopinionated, Craftsmanship, Ultimate, Peaceful, Deep</i>
</div>
<br/>
<div align="center">
	<i>Of The VFQAT &#160;&#160;&#160;&#160;&#160;||&#160;&#160;&#160;&#160;&#160; By The VFQAT &#160;&#160;&#160;&#160;&#160;|| &#160;&#160;&#160;&#160;&#160; For The VFQAT</i>
</div>
<br />
<div align="center">
	<i>Be The Master Of Your Fire, Be Firelord</i>
</div>
<br>

<div align="center">
	<i>Beyond Typing</i>
</div>
<br>
<div align="center">
<a href="https://firelordjs.com" target="_blank" style="color:blue"><strong>Doc</strong></a>
</div>
<br/>

Support [emulator](https://firelordjs.com/firelord/tests)

# Notice

Because the official admin SDK is lagging behind the official web SDK, Which mean `or()` and `and()` clause are not available for admin. (update: they are available now, will add them in the future)

## Why Do You Need This? What Problems Firelord Solves?

Read here at [FirelordJS](https://github.com/tylim88/FirelordJS#readme).

## About

This wrapper wrap around admin Firestore V8 interface(There is no official V9 admin version) and turn it into type safe V9 interface.

The API is basically same as the web version, both web and admin version basically sharing the same documentation.

It does not become modular like the web version, but this is ok because we don't care about package size in back end.

The ultimate goal is to unify the knowledge of back end and front end, so we don't need to learn both V9 and V8 and most importantly: absolute type safe.

Due to a lot of small differences, it is unrealistic to squeeze both platforms under the same library unless we give up some functionalities.

## What is next?

Add support for Firestore function triggers.

## Have Questions?

[Just Ask](https://github.com/tylim88/FirelordJS/discussions)

Note: FirelordJS and Firelord share the same discussion space.

[release note](https://github.com/tylim88/Firelord/releases)

## Contributing

Read [here](https://firelordjs.com/miscellaneous/contributing)

## Related Projects

1. [FirelordJS](https://github.com/tylim88/FirelordJS) - Typescript wrapper for Firestore Web
2. [FireSword](https://github.com/tylim88/firesword) - Filter Firestore and RTDB Unknown Keys.
3. [FireCall](https://github.com/tylim88/FireCall) - Helper Function to write easier and safer Firebase onCall function.
4. [FireSageJS](https://github.com/tylim88/FireSageJS) - Typescript wrapper for Realtime Database
