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

    Function selectCollapsedFrom

    • The same as selectFrom except that the final output is collapsed until the first nested value that has more than 1 key or that is not an object.

      Type Parameters

      • Full extends AnyObject
      • const Selection extends any

      Parameters

      Returns KeyCount<
          ExcludeEmpty<
              NonNullable<
                  Full extends readonly Element[]
                      ? (
                          | Exclude<Element, AnyObject>
                          | (
                              Extract<Element, AnyObject> extends readonly Element[]
                                  ? (Exclude<(...), (...)> | ((...) extends (...) ? (...) : (...)))[]
                                  : MakeKeysOptional<
                                      Extract<Element, AnyObject>,
                                      {
                                          -readonly [Key in (...) | (...) | (...) as (...) extends (...)
                                              ? (...)
                                              : (...)]: (...) | (...)
                                      },
                                  >
                          )
                      )[]
                      : 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<(...)> extends readonly (...)[]
                                              ? (...)[]
                                              : MakeKeysOptional<(...), (...)>
                                          : Full[Key]
                                  )
                                  | Exclude<Full[Key], AnyObject>
                          },
                      >,
              >,
          >,
      > extends 1
          ? Selection[keyof (
              Full extends readonly Element[]
                  ? (
                      | Exclude<Element, AnyObject>
                      | (
                          Extract<Element, AnyObject> extends readonly Element[]
                              ? (Exclude<(...), (...)> | ((...) extends (...) ? (...) : (...)))[]
                              : MakeKeysOptional<
                                  Extract<Element, AnyObject>,
                                  {
                                      -readonly [Key in (...) | (...) | (...) as (...) extends (...)
                                          ? (...)
                                          : (...)]: (...) | (...)
                                  },
                              >
                      )
                  )[]
                  : 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<(...)> extends readonly (...)[]
                                          ? (...)[]
                                          : MakeKeysOptional<(...), (...)>
                                      : Full[Key]
                              )
                              | Exclude<Full[Key], AnyObject>
                      },
                  >
          )] extends GenericSelectionSet
              ? | (
                  KeyCount<
                      ExcludeEmpty<
                          NonNullable<
                              NonNullable<Full[keyof (...)]> extends readonly Element[]
                                  ? (Exclude<(...), (...)> | ((...) extends (...) ? (...) : (...)))[]
                                  : MakeKeysOptional<
                                      NonNullable<(...)[(...)]>,
                                      {
                                          -readonly [Key in (...) | (...) | (...) as (...) extends (...)
                                              ? (...)
                                              : (...)]: (...) | (...)
                                      },
                                  >,
                          >,
                      >,
                  > extends 1
                      ? any[any][keyof (
                          NonNullable<Full[keyof (...)]> extends readonly Element[]
                              ? (Exclude<(...), (...)> | ((...) extends (...) ? (...) : (...)))[]
                              : MakeKeysOptional<
                                  NonNullable<(...)[(...)]>,
                                  {
                                      -readonly [Key in (...) | (...) | (...) as (...) extends (...)
                                          ? (...)
                                          : (...)]: (...) | (...)
                                  },
                              >
                      )] extends GenericSelectionSet
                          ? | (
                              KeyCount<
                                  ExcludeEmpty<NonNullable<(...) extends (...) ? (...) : (...)>>,
                              > extends 1
                                  ? any[any][keyof ((...) extends (...) ? (...) : (...))] extends GenericSelectionSet
                                      ?
                                          | (
                                              KeyCount<(...)> extends 1
                                                  ? (...) extends (...) ? (...) : (...)
                                                  : (...) extends (...) ? (...) : (...)
                                          )
                                          | Extract<(...)[(...)], (...) | (...)>
                                      : Values<
                                          NonNullable<(...)> extends readonly (...)[]
                                              ? (...)[]
                                              : MakeKeysOptional<(...), (...)>,
                                      >
                                  : NonNullable<NonNullable<(...)>[keyof (...)]> extends readonly Element[]
                                      ? (Exclude<(...), (...)> | ((...) extends (...) ? (...) : (...)))[]
                                      : MakeKeysOptional<
                                          NonNullable<(...)[(...)]>,
                                          {
                                              -readonly [Key in (...) | (...) | (...) as (...) extends (...)
                                                  ? (...)
                                                  : (...)]: (...) | (...)
                                          },
                                      >
                          )
                          | Extract<
                              NonNullable<Full[keyof (...)]>[keyof (
                                  NonNullable<(...)> extends readonly (...)[]
                                      ? (...)[]
                                      : MakeKeysOptional<(...), (...)>
                              )],
                              undefined | null,
                          >
                          : Values<
                              NonNullable<Full[keyof ((...) extends (...) ? (...) : (...))]> extends readonly Element[]
                                  ? (
                                      | Exclude<Element, AnyObject>
                                      | (
                                          Extract<(...), (...)> extends readonly (...)[]
                                              ? (...)[]
                                              : MakeKeysOptional<(...), (...)>
                                      )
                                  )[]
                                  : MakeKeysOptional<
                                      NonNullable<Full[keyof (...)]>,
                                      {
                                          -readonly [Key in string | number | symbol as (...)[(...)] extends false
                                              ? never
                                              : (...) extends (...) ? (...) : (...)]:
                                              | ((...) extends (...) ? (...) : (...))
                                              | Exclude<(...), (...)>
                                      },
                                  >,
                          >
                      : NonNullable<
                          Full[keyof (
                              Full extends readonly Element[]
                                  ? ((...) | (...))[]
                                  : MakeKeysOptional<
                                      Full,
                                      { -readonly [Key in (...) as (...)]: (...) },
                                  >
                          )],
                      > extends readonly Element[]
                          ? (
                              | Exclude<Element, AnyObject>
                              | (
                                  Extract<Element, AnyObject> extends readonly Element[]
                                      ? (Exclude<(...), (...)> | ((...) extends (...) ? (...) : (...)))[]
                                      : MakeKeysOptional<
                                          Extract<Element, AnyObject>,
                                          {
                                              -readonly [Key in (...) | (...) | (...) as (...) extends (...)
                                                  ? (...)
                                                  : (...)]: (...) | (...)
                                          },
                                      >
                              )
                          )[]
                          : MakeKeysOptional<
                              NonNullable<
                                  Full[keyof (
                                      Full extends readonly (...)[]
                                          ? (...)[]
                                          : MakeKeysOptional<(...), (...)>
                                  )],
                              >,
                              {
                                  -readonly [Key in string | number | symbol as any[any][Key] extends false
                                      ? never
                                      : Key extends keyof NonNullable<(...)> ? Key<Key> : never]:
                                      | (
                                          any[any][Key] extends GenericSelectionSet
                                              ? NonNullable<(...)> extends readonly (...)[]
                                                  ? (...)[]
                                                  : MakeKeysOptional<(...), (...)>
                                              : NonNullable<(...)>[Key]
                                      )
                                      | Exclude<NonNullable<(...)>[Key], AnyObject>
                              },
                          >
              )
              | Extract<
                  Full[keyof (
                      Full extends readonly Element[]
                          ? (
                              | Exclude<Element, AnyObject>
                              | (
                                  Extract<(...), (...)> extends readonly (...)[]
                                      ? (...)[]
                                      : MakeKeysOptional<(...), (...)>
                              )
                          )[]
                          : MakeKeysOptional<
                              Full,
                              {
                                  -readonly [Key in string
                                  | number
                                  | symbol as (...)[(...)] extends false
                                      ? never
                                      : (...) extends (...) ? (...) : (...)]:
                                      | ((...) extends (...) ? (...) : (...))
                                      | Exclude<(...), (...)>
                              },
                          >
                  )],
                  undefined
                  | null,
              >
              : Values<
                  Full 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<
                          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<(...), (...)>> extends readonly Element[]
                                              ? ((...) | (...))[]
                                              : MakeKeysOptional<
                                                  NonNullable<(...)>,
                                                  { -readonly [Key in (...) as (...)]: (...) },
                                              >
                                          : Full[Key]
                                  )
                                  | Exclude<Full[Key], AnyObject>
                          },
                      >,
              >
          : Full extends readonly Element[]
              ? (
                  | Exclude<Element, AnyObject>
                  | (
                      Extract<Element, AnyObject> extends readonly Element[]
                          ? (
                              | Exclude<Element, AnyObject>
                              | (
                                  Extract<Element, AnyObject> extends readonly Element[]
                                      ? (Exclude<(...), (...)> | ((...) extends (...) ? (...) : (...)))[]
                                      : MakeKeysOptional<
                                          Extract<Element, AnyObject>,
                                          {
                                              -readonly [Key in (...) | (...) | (...) as (...) extends (...)
                                                  ? (...)
                                                  : (...)]: (...) | (...)
                                          },
                                      >
                              )
                          )[]
                          : MakeKeysOptional<
                              Extract<Element, AnyObject>,
                              {
                                  -readonly [Key in string | number | symbol as Selection[Key] extends false
                                      ? never
                                      : Key extends keyof Extract<(...), (...)> ? Key<Key> : never]:
                                      | (
                                          Selection[Key] extends GenericSelectionSet
                                              ? NonNullable<(...)> extends readonly (...)[]
                                                  ? (...)[]
                                                  : MakeKeysOptional<(...), (...)>
                                              : Extract<(...), (...)>[Key]
                                      )
                                      | Exclude<Extract<(...), (...)>[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<(...), (...)> extends readonly (...)[]
                                                  ? (...)[]
                                                  : MakeKeysOptional<(...), (...)>
                                          )
                                      )[]
                                      : MakeKeysOptional<
                                          NonNullable<Extract<(...)[(...)], AnyObject>>,
                                          {
                                              -readonly [Key in string | number | symbol as (...)[(...)] extends false
                                                  ? never
                                                  : (...) extends (...) ? (...) : (...)]:
                                                  | ((...) extends (...) ? (...) : (...))
                                                  | Exclude<(...), (...)>
                                          },
                                      >
                                  : Full[Key]
                          )
                          | Exclude<Full[Key], AnyObject>
                  },
              >

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

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