@daiso-tech/core
Version:
The library offers flexible, framework-agnostic solutions for modern web applications, built on adaptable components that integrate seamlessly with popular frameworks like Next Js.
48 lines • 1.17 kB
JavaScript
/**
* @module Utilities
*/
import { isInvokable, resolveInvokable, } from "../../utilities/functions/invokable.js";
/**
* @internal
*/
export function isLazy(lazyable) {
return isInvokable(lazyable);
}
/**
* @internal
*/
export function isLazyPromise(lazyable) {
return (typeof lazyable === "object" &&
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
typeof lazyable?.then === "function" &&
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
typeof lazyable?.defer === "function");
}
/**
* @internal
*/
export function isAsyncLazy(lazyable) {
return isInvokable(lazyable) || isLazyPromise(lazyable);
}
/**
* @internal
*/
export function resolveLazyable(lazyable) {
if (isLazy(lazyable)) {
return resolveInvokable(lazyable)();
}
return lazyable;
}
/**
* @internal
*/
export async function resolveAsyncLazyable(lazyable) {
if (isAsyncLazy(lazyable)) {
if (isLazyPromise(lazyable)) {
return await lazyable;
}
return await resolveInvokable(lazyable)();
}
return lazyable;
}
//# sourceMappingURL=lazy.js.map