use std::mem::MaybeUninit;
use super::{bindings as napi, raw::Env};
pub unsafe fn create(env: Env) -> (napi::Deferred, napi::Value) {
let mut deferred = MaybeUninit::uninit();
let mut promise = MaybeUninit::uninit();
napi::create_promise(env, deferred.as_mut_ptr(), promise.as_mut_ptr()).unwrap();
(deferred.assume_init(), promise.assume_init())
}
pub unsafe fn resolve(env: Env, deferred: napi::Deferred, resolution: napi::Value) {
napi::resolve_deferred(env, deferred, resolution).unwrap();
}
pub unsafe fn reject(env: Env, deferred: napi::Deferred, rejection: napi::Value) {
napi::reject_deferred(env, deferred, rejection).unwrap();
}
#[cfg(feature = "napi-6")]
pub unsafe fn reject_err_message(env: Env, deferred: napi::Deferred, msg: impl AsRef<str>) {
let msg = super::string(env, msg);
let mut err = MaybeUninit::uninit();
napi::create_error(env, std::ptr::null_mut(), msg, err.as_mut_ptr()).unwrap();
reject(env, deferred, err.assume_init());
}