Interface BuilderContext<TPrevData, TProperty, TMethodCaller>

interface BuilderContext<TPrevData, TProperty, TMethodCaller> {
    data: Merge<DataWithPropertyValues<TPrevData, TProperty>>;
    implement: (<TIn>(this, traitBehavior, impl) => void);
    lifetime: (<L>(this, name, func) => void);
    listener: (<T>(this, func) => EventListener<T> & {
        [TaggedSymbol]: [typeof METHOD_TAG];
    });
    method: (<Fn>(this, func) => Tag<Fn, typeof METHOD_TAG>);
    pageLifetime: ((this, name, func) => void);
    self: TMethodCaller;
    setData: ((this, newData) => void);
    observer<P, V>(this, paths, func): void;
    observer<P, V>(this, paths, func): void;
    relation<TOut>(this, def): RelationHandler<any, TOut>;
    relation(this, def): RelationHandler<any, never>;
}

Type Parameters

  • TPrevData extends DataList
  • TProperty extends PropertyList
  • TMethodCaller

Hierarchy

Properties

data: Merge<DataWithPropertyValues<TPrevData, TProperty>>
implement: (<TIn>(this, traitBehavior, impl) => void)

Type declaration

    • <TIn>(this, traitBehavior, impl): void
    • Type Parameters

      • TIn extends {
            [x: string]: any;
        }

      Parameters

      Returns void

lifetime: (<L>(this, name, func) => void)

Type declaration

    • <L>(this, name, func): void
    • Type Parameters

      • L extends keyof Lifetimes

      Parameters

      • this: void
      • name: L
      • func: Lifetimes[L]

      Returns void

listener: (<T>(this, func) => EventListener<T> & {
    [TaggedSymbol]: [typeof METHOD_TAG];
})

Type declaration

    • <T>(this, func): EventListener<T> & {
          [TaggedSymbol]: [typeof METHOD_TAG];
      }
    • Type Parameters

      • T

      Parameters

      Returns EventListener<T> & {
          [TaggedSymbol]: [typeof METHOD_TAG];
      }

method: (<Fn>(this, func) => Tag<Fn, typeof METHOD_TAG>)

Type declaration

    • <Fn>(this, func): Tag<Fn, typeof METHOD_TAG>
    • Type Parameters

      • Fn extends ComponentMethod

      Parameters

      • this: void
      • func: Fn

      Returns Tag<Fn, typeof METHOD_TAG>

pageLifetime: ((this, name, func) => void)

Type declaration

    • (this, name, func): void
    • Parameters

      • this: void
      • name: string
      • func: ((...args) => void)
          • (...args): void
          • Parameters

            • Rest ...args: any[]

            Returns void

      Returns void

setData: ((this, newData) => void)

Type declaration

    • (this, newData): void
    • Parameters

      • this: void
      • newData: Partial<IsAny<TPrevData> extends true
            ? Record<`${any}`, TPrevData>
            : UnionToIntersection<TPrevData extends any[]
                ? {
                    [P in number]: (IsAny<(...)[(...)]> extends true
                        ? Record<SetDataStringPath<(...), (...)>, (...)[(...)]>
                        : UnionToIntersection<(...) extends (...)
                            ? (...)
                            : (...)>) & Record<`${P}`, TPrevData<(...)>[P]>
                }[keyof TPrevData<TPrevData> & number]
                : TPrevData extends Record<string | number, any>
                    ? {
                        [P in string | number]: (IsAny<(...)> extends true
                            ? Record<(...), (...)>
                            : UnionToIntersection<(...)>) & Record<`${(...)}`, (...)[(...)]>
                    }[keyof TPrevData<TPrevData> & (string | number)]
                    : never>>

      Returns void

Methods

  • Type Parameters

    Parameters

    • this: void
    • paths: P
    • func: ((newValue) => void)
        • (newValue): void
        • Parameters

          • newValue: V

          Returns void

    Returns void

  • Type Parameters

    • P extends ObserverDataPathStrings<DataWithPropertyValues<TPrevData, TProperty>, IsAny<DataWithPropertyValues<TPrevData, TProperty>> extends true
          ? `${any}`
          : DataWithPropertyValues<TPrevData, TProperty> extends any[]
              ? {
                  [P in number]: `${P}` | (IsAny<((...) & (...) & (...))[P]> extends true
                      ? SetDataStringPath<any, `${P}`>
                      : ((...) & (...) & (...))[P] extends any[]
                          ? {
                              [P in (...)]: (...)
                          }[(...) & (...)]
                          : (...)[(...)] extends Record<(...), (...)>
                              ? (...)[(...)]
                              : `${(...)}`)
              }[(keyof any[] | keyof TProperty | keyof TPrevData) & number]
              : DataWithPropertyValues<TPrevData, TProperty> extends Record<string | number, any>
                  ? {
                      [P in string | number]: `${P}` | (IsAny<(...)[(...)]> extends true
                          ? SetDataStringPath<any, `${(...)}`>
                          : (...)[(...)] extends (...)[]
                              ? (...)[(...)]
                              : (...) extends (...)
                                  ? (...)
                                  : (...))
                  }[(keyof TProperty | keyof TPrevData) & (string | number)]
                  : never>[]
    • V = {
          [K in string | number | symbol]: Merge<GetFromObserverPathString<DataWithPropertyValues<TPrevData, TProperty>, P[K<K>]>>
      }

    Parameters

    • this: void
    • paths: readonly [P]
    • func: ((...newValues) => void)
        • (...newValues): void
        • Parameters

          • Rest ...newValues: V extends any[]
                ? V<V>
                : never

          Returns void

    Returns void

  • Type Parameters

    • TOut extends {
          [key: string]: any;
      }

    Parameters

    • this: void
    • def: TraitRelationParams<TOut>

    Returns RelationHandler<any, TOut>

  • Parameters

    • this: void
    • def: RelationParams

    Returns RelationHandler<any, never>