Home / File/ walk.ts — tailwindcss Source File

walk.ts — tailwindcss Source File

Architecture documentation for walk.ts, a typescript file in the tailwindcss codebase. 0 imports, 27 dependents.

File typescript TailwindCore CompatLayer 27 dependents 6 functions

Entity Profile

Dependency Diagram

graph LR
  de024372_c459_7fda_5f4a_06bad3d1cb60["walk.ts"]
  1fee5c3b_7ae2_ca4d_95c6_27cf503e0f66["urls.ts"]
  1fee5c3b_7ae2_ca4d_95c6_27cf503e0f66 --> de024372_c459_7fda_5f4a_06bad3d1cb60
  3fa17ded_e4a4_d883_1b62_64554550b238["migrate-preflight.ts"]
  3fa17ded_e4a4_d883_1b62_64554550b238 --> de024372_c459_7fda_5f4a_06bad3d1cb60
  a7d7b440_1887_5ac5_f34b_594e54b9f789["migrate-automatic-var-injection.ts"]
  a7d7b440_1887_5ac5_f34b_594e54b9f789 --> de024372_c459_7fda_5f4a_06bad3d1cb60
  be87a3ac_cc03_f825_0729_c9fd3abfd6dc["migrate-theme-to-var.ts"]
  be87a3ac_cc03_f825_0729_c9fd3abfd6dc --> de024372_c459_7fda_5f4a_06bad3d1cb60
  b423329d_bcc8_8f9b_cb7a_26d5991a0602["migrate-variant-order.ts"]
  b423329d_bcc8_8f9b_cb7a_26d5991a0602 --> de024372_c459_7fda_5f4a_06bad3d1cb60
  3a015725_f8f3_769d_8ffe_6c8802c16649["apply.ts"]
  3a015725_f8f3_769d_8ffe_6c8802c16649 --> de024372_c459_7fda_5f4a_06bad3d1cb60
  be9dc25e_f7f3_2f3c_5fd4_38f78bab4cca["ast.test.ts"]
  be9dc25e_f7f3_2f3c_5fd4_38f78bab4cca --> de024372_c459_7fda_5f4a_06bad3d1cb60
  247718b3_b5b8_7b17_49ec_2bb382291311["ast.ts"]
  247718b3_b5b8_7b17_49ec_2bb382291311 --> de024372_c459_7fda_5f4a_06bad3d1cb60
  7283d2cb_a00f_7c30_8fea_4e83f9f06b2c["at-import.ts"]
  7283d2cb_a00f_7c30_8fea_4e83f9f06b2c --> de024372_c459_7fda_5f4a_06bad3d1cb60
  d497ed7a_208d_0673_d424_ce5c71a06816["candidate.ts"]
  d497ed7a_208d_0673_d424_ce5c71a06816 --> de024372_c459_7fda_5f4a_06bad3d1cb60
  4abb8e75_eadb_741a_7e25_e664d7f41b41["canonicalize-candidates.ts"]
  4abb8e75_eadb_741a_7e25_e664d7f41b41 --> de024372_c459_7fda_5f4a_06bad3d1cb60
  3eaa8702_2ade_17fb_d9e1_9250d5d2f57c["apply-compat-hooks.ts"]
  3eaa8702_2ade_17fb_d9e1_9250d5d2f57c --> de024372_c459_7fda_5f4a_06bad3d1cb60
  dffbaa84_d37d_a5c6_7d97_84d5fd0846f1["plugin-api.ts"]
  dffbaa84_d37d_a5c6_7d97_84d5fd0846f1 --> de024372_c459_7fda_5f4a_06bad3d1cb60
  cf1beec0_f740_c83b_e16e_889783f70ef8["compile.ts"]
  cf1beec0_f740_c83b_e16e_889783f70ef8 --> de024372_c459_7fda_5f4a_06bad3d1cb60
  style de024372_c459_7fda_5f4a_06bad3d1cb60 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

const enum WalkKind {
  Continue,
  Skip,
  Stop,
  Replace,
  ReplaceSkip,
  ReplaceStop,
}

export const WalkAction = {
  Continue: { kind: WalkKind.Continue } as const,
  Skip: { kind: WalkKind.Skip } as const,
  Stop: { kind: WalkKind.Stop } as const,
  Replace: <T>(nodes: T | T[]) =>
    ({ kind: WalkKind.Replace, nodes: Array.isArray(nodes) ? nodes : [nodes] }) as const,
  ReplaceSkip: <T>(nodes: T | T[]) =>
    ({ kind: WalkKind.ReplaceSkip, nodes: Array.isArray(nodes) ? nodes : [nodes] }) as const,
  ReplaceStop: <T>(nodes: T | T[]) =>
    ({ kind: WalkKind.ReplaceStop, nodes: Array.isArray(nodes) ? nodes : [nodes] }) as const,
} as const

type WalkAction = typeof WalkAction
type WalkResult<T> =
  | WalkAction['Continue']
  | WalkAction['Skip']
  | WalkAction['Stop']
  | ReturnType<typeof WalkAction.Replace<T>>
  | ReturnType<typeof WalkAction.ReplaceSkip<T>>
  | ReturnType<typeof WalkAction.ReplaceStop<T>>

type EnterResult<T> = WalkResult<T>
type ExitResult<T> = Exclude<WalkResult<T>, { kind: WalkKind.Skip }>

type Parent<T> = T & { nodes: T[] }

export interface VisitContext<T> {
  parent: Parent<T> | null
  depth: number
  path: () => T[]
}

export function walk<T extends object>(
  ast: T[],
  hooks:
    | ((node: T, ctx: VisitContext<T>) => EnterResult<T> | void) // Old API, enter only
    | {
        enter?: (node: T, ctx: VisitContext<T>) => EnterResult<T> | void
        exit?: (node: T, ctx: VisitContext<T>) => ExitResult<T> | void
      },
): void {
  if (typeof hooks === 'function') walkImplementation(ast, hooks)
  else walkImplementation(ast, hooks.enter, hooks.exit)
}

interface Stack<T> {
  value: T
  prev: Stack<T> | null
}

function walkImplementation<T extends { nodes?: T[] }>(
// ... (137 more lines)

Domain

Subdomains

Frequently Asked Questions

What does walk.ts do?
walk.ts is a source file in the tailwindcss codebase, written in typescript. It belongs to the TailwindCore domain, CompatLayer subdomain.
What functions are defined in walk.ts?
walk.ts defines 6 function(s): T, WalkAction.Replace, WalkAction.ReplaceSkip, WalkAction.ReplaceStop, walk, walkImplementation.
What files import walk.ts?
walk.ts is imported by 27 file(s): apply-compat-hooks.ts, apply.ts, ast.test.ts, ast.ts, at-import.ts, candidate.ts, canonicalize-candidates.ts, compile.ts, and 19 more.
Where is walk.ts in the architecture?
walk.ts is located at packages/tailwindcss/src/walk.ts (domain: TailwindCore, subdomain: CompatLayer, directory: packages/tailwindcss/src).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free