api / type

StringSignalTrap

String trap with string manipulation methods.

Source: src/api/traps/types.ts

String trap with string manipulation methods.

Includes standard string methods as derived signal methods plus custom case conversion getters.

Signature

export type StringSignalTrap = GenericTrap<string> & {
  at: SignalifiedFunction<string["at"]>;
  charAt: SignalifiedFunction<string["charAt"]>;
  charCodeAt: SignalifiedFunction<string["charCodeAt"]>;
  codePointAt: SignalifiedFunction<string["codePointAt"]>;
  concat: SignalifiedFunction<string["concat"]>;
  endsWith: SignalifiedFunction<string["endsWith"]>;
  includes: SignalifiedFunction<string["includes"]>;
  indexOf: SignalifiedFunction<string["indexOf"]>;
  lastIndexOf: SignalifiedFunction<string["lastIndexOf"]>;
  padEnd: SignalifiedFunction<string["padEnd"]>;
  padStart: SignalifiedFunction<string["padStart"]>;
  repeat: SignalifiedFunction<string["repeat"]>;
  slice: SignalifiedFunction<string["slice"]>;
  startsWith: SignalifiedFunction<string["startsWith"]>;
  substring: SignalifiedFunction<string["substring"]>;
  trim: SignalifiedFunction<string["trim"]>;
  trimEnd: SignalifiedFunction<string["trimEnd"]>;
  trimStart: SignalifiedFunction<string["trimStart"]>;
  /** String length as a derived signal. */
  get length(): DerivedSignal<number>;
  /** Lowercase version of the string. */
  get lowercase(): DerivedSignal<string>;
  /** First letter capitalized, rest lowercase. */
  get Sentencecase(): DerivedSignal<string>;
  /** Each word's first letter capitalized. */
  get TitleCase(): DerivedSignal<string>;
  /** Uppercase version of the string. */
  get UPPERCASE(): DerivedSignal<string>;
  /** Compares strings according to locale. */
  localeCompare: (
    that: MaybeSignalValue<string>,
    locales?: MaybeSignalValue<string | string[] | undefined>,
    options?: Intl.CollatorOptions
  ) => DerivedSignal<number>;
  /** Normalizes to the specified Unicode form. */
  normalize: (
    form: MaybeSignalValue<"NFC" | "NFD" | "NFKC" | "NFKD">
  ) => DerivedSignal<string>;
  /** Replaces the first match of `searchValue` with `replaceValue`. */
  replace: (
    searchValue: MaybeSignalValue<string> | RegExp,
    replaceValue: MaybeSignalValue<string>
  ) => DerivedSignal<string>;
  /** Replaces all matches of `searchValue` with `replaceValue`. */
  replaceAll: (
    searchValue: MaybeSignalValue<string> | RegExp,
    replaceValue: MaybeSignalValue<string>
  ) => DerivedSignal<string>;
  /** Searches for a match and returns the index. */
  search: (regexp: RegExp) => DerivedSignal<number>;
  /** Splits the string into an array. */
  split: (
    separator: MaybeSignalValue<string> | RegExp,
    limit?: MaybeSignalValue<number | undefined>
  ) => DerivedSignal<string[]>;
  /** Converts to locale-specific lowercase. */
  toLocaleLowerCase: (
    locales?: MaybeSignalValue<string | string[] | undefined>
  ) => DerivedSignal<string>;
  /** Converts to locale-specific uppercase. */
  toLocaleUpperCase: (
    locales?: MaybeSignalValue<string | string[] | undefined>
  ) => DerivedSignal<string>;
};

/**
 * Array trap with array transformation methods.
 *
 * Includes standard array methods as derived signal methods plus custom
 * getters and partition methods.
 *
 * @template T - The array element type
 *
 * @remarks
 * - Mutating array methods are not included because derived signals are immutable
 * - The `partition()` method splits the array into two signals based on a predicate
 */
export type ArraySignalTrap<T> = GenericTrap<T> & {
  at: SignalifiedFunction<Array<T>["at"]>;
  concat: (items: MaybeSignalValue<T[]>) => DerivedSignal<T[]>;
  copyWithin: SignalifiedFunction<Array<T>["copyWithin"]>;
  fill: SignalifiedFunction<Array<T>["fill"]>;
  includes: SignalifiedFunction<Array<T>["includes"]>;
  indexOf: SignalifiedFunction<Array<T>["indexOf"]>;
  join: SignalifiedFunction<Array<T>["join"]>;
  lastIndexOf: SignalifiedFunction<Array<T>["lastIndexOf"]>;
  slice: SignalifiedFunction<Array<T>["slice"]>;
  with: SignalifiedFunction<Array<T>["with"]>;
  every: (
    itemSatifiesCondition: (item: T, index: number, array: T[]) => boolean
  ) => DerivedSignal<boolean>;
  filter: (
    where: (item: T, index: number, array: T[]) => boolean
  ) => DerivedSignal<T[]>;
  find: (
    where: (item: T, index: number, array: T[]) => boolean
  ) => DerivedSignal<T | undefined>;
  findIndex: (
    where: (item: T, index: number, array: T[]) => boolean
  ) => DerivedSignal<number>;
  findLast: (
    where: (item: T, index: number, array: T[]) => boolean
  ) => DerivedSignal<T | undefined>;
  findLastIndex: (
    where: (item: T, index: number, array: T[]) => boolean
  ) => DerivedSignal<number>;
  /** Last item of the array. */
  get lastItem(): DerivedSignal<T | undefined>;
  /** Array length. */
  get length(): DerivedSignal<number>;
  map: <U>(
    mapFn: (item: T, index: number, array: T[]) => U
  ) => DerivedSignal<U[]>;
  /** Splits the array into `[passing, failing]` based on a predicate. */
  partition: (
    where: (item: T, index: number, array: T[]) => boolean
  ) => readonly [DerivedSignal<T[]>, DerivedSignal<T[]>];
  reduce: <U>(
    reducerFn: (
      previousValue: U,
      currentValue: T,
      currentIndex: number,
      array: T[]
    ) => U,
    initialValue: U
  ) => DerivedSignal<U>;
  reduceRight: <U>(
    reducerFn: (
      previousValue: U,
      currentValue: T,
      currentIndex: number,
      array: T[]
    ) => U,
    initialValue: U
  ) => DerivedSignal<U>;
  /** Reversed copy of the array. */
  get reversed(): DerivedSignal<T[]>;
  some: (
    itemSatifiesCondition: (item: T, index: number, array: T[]) => boolean
  ) => DerivedSignal<boolean>;
  toSorted: (
    compareFn?: ((a: T, b: T) => number) | undefined
  ) => DerivedSignal<T[]>;
  toSpliced: (
    start: MaybeSignalValue<number>,
    deleteCount: MaybeSignalValue<number>,
    ...items: T[]
  ) => DerivedSignal<T[]>;
};

/**
 * Record trap for plain objects with property access methods.
 *
 * @template T - The object type
 *
 * @remarks
 * - Throws if the value is not a plain object
 */
export type RecordSignalTrap<T extends Record<string, unknown>> =
  GenericTrap<T> & {
    /** Returns a derived signal for a specific property. */
    prop: <K extends keyof T>(key: K) => DerivedSignal<T[K]>;
    /** Returns an object with all properties as derived signals. */
    get props(): { [key in keyof T]: DerivedSignal<T[key]> };
    /** Returns the object's keys as a derived signal. */
    get keys(): DerivedSignal<string[]>;
  };

Type Parameters

  • The string type