Skip to content

Improve error handling for polymorphic field data with missing type value #297

Open
@atahanyorganci

Description

@atahanyorganci

I encountered an error with following code trying to add polymorphic nested objects to a list.

export const Link = defineNestedType(() => ({
    name: "Link",
    description: "Link to an external resource",
    fields: {
        text: {
            type: "string",
            required: true,
        },
        url: {
            type: "string",
            required: true,
        },
    },
}));

export const LinkList = defineNestedType(() => ({
    name: "LinkList",
    description: "List of links to external resources",
    fields: {
        text: {
            type: "string",
            required: true,
        },
        links: {
            type: "list",
            required: true,
            of: Link,
        },
    },
}));

export const NavbarLinks = defineDocumentType(() => ({
    name: "NavbarLinks",
    filePathPattern: "core/navbarLinks.json",
    isSingleton: true,
    fields: {
        links: {
            type: "list",
            of: [Link, LinkList],
            required: true,
        },
    },
}));

This produces following stack trace

TypeError: Cannot read properties of undefined (reading 'replace')
    at idToFileName (file://.../node_modules/@contentlayer/core/src/generation/generate-dotpkg.ts:389:89)
    at makeDataExportFile (file://.../node_modules/@contentlayer/core/src/generation/generate-dotpkg.ts:291:53)
    at file://.../node_modules/@contentlayer/core/src/generation/generate-dotpkg.ts:153:18
    at Array.map (<anonymous>)
    at next (file://.../node_modules/@contentlayer/core/src/generation/generate-dotpkg.ts:152:44)
    at Generator.next (<anonymous>)
    at ApplyFrame.apply (file://.../node_modules/@effect-ts/system/_src/Effect/gen.ts:148:36)
    at FiberContext.nextInstr (file://.../node_modules/@effect-ts/system/_src/Fiber/context.ts:357:28)
    at FiberContext.evaluateNow (file://.../node_modules/@effect-ts/system/_src/Fiber/context.ts:940:36)
    at file://.../node_modules/@effect-ts/system/_src/Fiber/context.ts:576:33

Fiber: #17 (started at: 2022-09-04T21:49:21.161Z) was supposed to continue to:

  a future continuation at packages/@contentlayer/core/src/generation/generate-dotpkg.ts:216:13

Fiber: #17 (started at: 2022-09-04T21:49:21.161Z) Execution trace:

  packages/@contentlayer/core/src/generation/generate-dotpkg.ts:144:22
  packages/@contentlayer/core/src/generation/generate-dotpkg.ts:143:60
  packages/@contentlayer/core/src/generation/generate-dotpkg.ts:125:10
  packages/@contentlayer/core/src/generation/generate-dotpkg.ts:82:13
  packages/@contentlayer/core/src/generation/generate-dotpkg.ts:78:16

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions