Nanobots Producing Megastructures

    @pothos/plugin-simple-objects
    TypeScript icon, indicating that this package has built-in type declarations

    3.4.0 • Public • Published

    Simple Objects Plugin for Pothos

    The Simple Objects Plugin provides a way to define objects and interfaces without defining type definitions for those objects, while still getting full type safety.

    Usage

    Install

    yarn add @pothos/plugin-simple-objects

    Setup

    import SimpleObjectsPlugin from '@pothos/plugin-simple-objects';
    const builder = new SchemaBuilder({
      plugins: [SimpleObjectsPlugin],
    });

    Example

    import SchemaBuilder from '@pothos/core';
    import SimpleObjectsPlugin from '@pothos/plugin-simple-objects';
    
    const builder = new SchemaBuilder({
      plugins: [SimpleObjectsPlugin],
    });
    
    const ContactInfo = builder.simpleObject('ContactInfo', {
      fields: (t) => ({
        email: t.string({
          nullable: false,
        }),
        phoneNUmber: t.string({
          nullable: true,
        }),
      }),
    });
    
    const Node = builder.simpleInterface('Node', {
      fields: (t) => ({
        id: t.id({
          nullable: false,
        }),
      }),
    });
    
    const UserType = builder.simpleObject('User', {
      interfaces: [Node],
      fields: (t) => ({
        firstName: t.string(),
        lastName: t.string(),
        contactInfo: t.field({
          type: ContactInfo,
          nullable: false,
        }),
      }),
    });
    
    builder.queryType({
      fields: (t) => ({
        user: t.field({
          type: UserType,
          args: {
            id: t.arg.id({ required: true }),
          },
          resolve: (parent, args, { User }) => {
            return {
              id: '1003',
              firstName: 'Leia',
              lastName: 'Organa',
              contactInfo: {
                email: 'leia@example.com',
                phoneNUmber: null,
              },
            };
          },
        }),
      }),
    });

    Limitations

    When using simpleObjects in combination with other plugins like authorization, those plugins may use unknown as the parent type in some custom fields (eg. parent of a permission check function on a field).

    Install

    npm i @pothos/plugin-simple-objects

    DownloadsWeekly Downloads

    2,087

    Version

    3.4.0

    License

    ISC

    Unpacked Size

    89.1 kB

    Total Files

    30

    Last publish

    Collaborators

    • hayes