augment-vir - v31.32.2
    Preparing search index...

    Function selectFrom

    • Performs a SQL-like nested selection on an object, extracting the selected values.

      Type Parameters

      • Full extends AnyObject
      • const Selection extends any

      Parameters

      Returns Full extends readonly Element[]
          ? (
              | Exclude<Element, AnyObject>
              | (
                  Extract<Element, AnyObject> extends readonly Element[]
                      ? (
                          | Exclude<Element, AnyObject>
                          | (
                              Extract<Element, AnyObject> extends readonly Element[]
                                  ? (
                                      | Exclude<Element, AnyObject>
                                      | (
                                          Extract<(...), (...)> extends readonly (...)[]
                                              ? (...)[]
                                              : MakeKeysOptional<(...), (...)>
                                      )
                                  )[]
                                  : MakeKeysOptional<
                                      Extract<Element, AnyObject>,
                                      {
                                          -readonly [Key in string | number | symbol as (...)[(...)] extends false
                                              ? never
                                              : (...) extends (...) ? (...) : (...)]:
                                              | ((...) extends (...) ? (...) : (...))
                                              | Exclude<(...), (...)>
                                      },
                                  >
                          )
                      )[]
                      : MakeKeysOptional<
                          Extract<Element, AnyObject>,
                          {
                              -readonly [Key in string | number | symbol as Selection[Key] extends false
                                  ? never
                                  : Key extends keyof Extract<Element, AnyObject> ? Key<Key> : never]:
                                  | (
                                      Selection[Key] extends GenericSelectionSet
                                          ? NonNullable<Extract<(...), (...)>> extends readonly Element[]
                                              ? ((...) | (...))[]
                                              : MakeKeysOptional<
                                                  NonNullable<(...)>,
                                                  { -readonly [Key in (...) as (...)]: (...) },
                                              >
                                          : Extract<Element, AnyObject>[Key]
                                  )
                                  | Exclude<Extract<Element, AnyObject>[Key], AnyObject>
                          },
                      >
              )
          )[]
          : MakeKeysOptional<
              Full,
              {
                  -readonly [Key in string
                  | number
                  | symbol as Selection[Key] extends false
                      ? never
                      : Key extends keyof Full ? Key<Key> : never]:
                      | (
                          Selection[Key] extends GenericSelectionSet
                              ? NonNullable<Extract<Full[Key], AnyObject>> extends readonly Element[]
                                  ? (
                                      | Exclude<Element, AnyObject>
                                      | (
                                          Extract<Element, AnyObject> extends readonly Element[]
                                              ? ((...) | (...))[]
                                              : MakeKeysOptional<
                                                  Extract<(...), (...)>,
                                                  { -readonly [Key in (...) as (...)]: (...) },
                                              >
                                      )
                                  )[]
                                  : MakeKeysOptional<
                                      NonNullable<Extract<Full[Key], AnyObject>>,
                                      {
                                          -readonly [Key in string | number | symbol as any[any][Key] extends false
                                              ? never
                                              : Key extends keyof (...) ? Key<(...)> : never]:
                                              | (
                                                  (...)[(...)] extends GenericSelectionSet
                                                      ? (...) extends (...) ? (...) : (...)
                                                      : (...)[(...)]
                                              )
                                              | Exclude<(...)[(...)], AnyObject>
                                      },
                                  >
                              : Full[Key]
                      )
                      | Exclude<Full[Key], AnyObject>
              },
          >

      import {selectFrom} from '@augment-vir/common';

      selectFrom(
      [
      {
      child: {
      grandChild: 'hi',
      grandChild2: 3,
      grandChild3: /something/,
      },
      },
      {
      child: {
      grandChild: 'hi',
      grandChild2: 4,
      grandChild3: /something/,
      },
      },
      ],
      {
      child: {
      grandChild2: true,
      },
      },
      );
      // output is `[{child: {grandChild2: 3}}, {child: {grandChild2: 4}}]`