#firebase #wasm-bindgen #firebase-database #api-bindings #npm-package #high-level

firebase-js

为wasm32-unknown-unknown Web目标提供与npm的firebase@9包的高级互操作

1 个不稳定版本

0.0.1 2023年4月25日

#36#npm-package

MIT 许可证

2MB
10K SLoC

JavaScript 10K SLoC // 0.3% comments Rust 140 SLoC // 0.1% comments TypeScript 27 SLoC

npm:firebase@9 在Rust中!

这是Firebase JS SDK的Rust版本。它目前仍在开发中,处于活跃开发阶段。

为什么?

我想使用Firebase,并且100%使用Rust。因此,鉴于对JS SDK的经验,这个包试图在尽可能使用自定义HTTP实现的同时,保留JS SDK的易用性和简单性,同时让您手头拥有JavaScript的全部功能!

这个包试图保持Firebase JS SDK的相同模块化结构,同时将API转换为Rust。每个Rust函数都提供了纯JS示例

用法

(假设secrets.rs文件)

use firebase_js::{app::initialize_app, database::{get_database, on_value_changed, get_ref_of_root}};
use log::info;

use crate::secrets::URL;

mod secrets;

fn main() {
	_ = console_log::init_with_level(log::Level::Debug);
	console_error_panic_hook::set_once();

	info!("firebase-js: main.rs()");
	
	let app = initialize_app(&secrets::get_config()).ok().unwrap();

	let db = get_database(&app, URL.to_string()).ok().unwrap();

	let reference = get_ref_of_root(&db).ok().unwrap();

	on_value_changed(&reference, &move |_| {
		info!("RS: on_value_changed() WOW!")
	})
}

工作进行中

  • 测试
    • [] 实际上没有测试 :(
  • 应用程序
    • initialize_app
  • 数据库
    • get_database
    • get_ref
      • get_ref_of_root (get_ref但针对db的根)
    • on_value_changed

依赖关系

~7–9.5MB
~178K SLoC