Skip to content
This repository has been archived by the owner on Sep 3, 2023. It is now read-only.

Commit

Permalink
feat(core): allow nodes to override the resolver
Browse files Browse the repository at this point in the history
  • Loading branch information
harlan-zw committed Aug 19, 2022
1 parent 69093d1 commit 4fb1631
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions src/core/resolve.ts
Expand Up @@ -20,7 +20,7 @@ export const executeResolverOnNode = <T extends Thing>(node: T, ctx: SchemaOrgCo
let defaults = resolver.defaults || {}
if (typeof defaults === 'function')
defaults = defaults(ctx)
node = defu(node, defaults)
node = defu(node, defaults) as T
}

// handle meta inherits
Expand Down Expand Up @@ -79,7 +79,7 @@ export const resolveNodeId = <T extends Thing>(node: T, ctx: SchemaOrgContext, r
}

export function resolveRelation(input: Arrayable<any>, ctx: SchemaOrgContext,
resolver: SchemaOrgNodeDefinition<any>,
fallbackResolver: SchemaOrgNodeDefinition<any>,
options: ResolverOptions = {},
) {
if (!input)
Expand All @@ -90,9 +90,12 @@ export function resolveRelation(input: Arrayable<any>, ctx: SchemaOrgContext,
if (Object.keys(input).length === 1 && input['@id'])
return a

let resolver = fallbackResolver
// remove resolver if the user is using define functions nested
if (a._resolver)
if (a._resolver) {
resolver = a._resolver
delete a._resolver
}

let node = executeResolverOnNode(a, ctx, resolver)
if (options.afterResolve)
Expand Down

0 comments on commit 4fb1631

Please sign in to comment.