share isObject code

pull/4660/head
Divyansh Singh 5 months ago
parent 0e48535eba
commit 369ba70138

@ -16,6 +16,7 @@ import { resolvePages } from './plugins/dynamicRoutesPlugin'
import {
APPEARANCE_KEY,
VP_SOURCE_KEY,
isObject,
slash,
type AdditionalConfig,
type Awaitable,
@ -309,10 +310,6 @@ export function mergeConfig(a: UserConfig, b: UserConfig, isRoot = true) {
return merged
}
function isObject(value: unknown): value is Record<string, any> {
return Object.prototype.toString.call(value) === '[object Object]'
}
export async function resolveSiteData(
root: string,
userConfig?: UserConfig,

@ -291,8 +291,8 @@ function reportConfigLayers(path: string, layers: SiteData[]) {
*/
export function stackView<T extends object>(...layers: Partial<T>[]): T {
layers = layers.filter((layer) => layer !== undefined)
if (!isStackable(layers[0])) return layers[0] as T
layers = layers.filter(isStackable)
if (!isObject(layers[0])) return layers[0] as T
layers = layers.filter(isObject)
if (layers.length <= 1) return layers[0] as T
return new Proxy(
{},
@ -331,11 +331,11 @@ export function stackView<T extends object>(...layers: Partial<T>[]): T {
) as T
}
function isStackable(obj: any) {
return typeof obj === 'object' && obj !== null && !Array.isArray(obj)
}
const UnpackStackView = Symbol('stack-view:unpack')
stackView.unpack = function <T>(obj: T): T[] | undefined {
return (obj as any)?.[UnpackStackView]
}
export function isObject(value: unknown): value is Record<string, any> {
return Object.prototype.toString.call(value) === '[object Object]'
}

Loading…
Cancel
Save