Home / File/ at-import.ts — tailwindcss Source File

at-import.ts — tailwindcss Source File

Architecture documentation for at-import.ts, a typescript file in the tailwindcss codebase. 9 imports, 2 dependents.

File typescript OxideEngine Scanner 9 imports 2 dependents 4 functions

Entity Profile

Dependency Diagram

graph LR
  bb501946_7944_1015_b5ff_34d10aace799["at-import.ts"]
  42640952_ea63_55f1_1ff1_00816e2980ae["ast.ts"]
  bb501946_7944_1015_b5ff_34d10aace799 --> 42640952_ea63_55f1_1ff1_00816e2980ae
  f9b19679_c1f0_28d6_4d1a_31a10c52e42d["atRule"]
  bb501946_7944_1015_b5ff_34d10aace799 --> f9b19679_c1f0_28d6_4d1a_31a10c52e42d
  2cb0bb18_cebb_3874_811d_77095e27cf0d["context"]
  bb501946_7944_1015_b5ff_34d10aace799 --> 2cb0bb18_cebb_3874_811d_77095e27cf0d
  54851997_7544_bab2_96ab_548e5f5df205["css-parser.ts"]
  bb501946_7944_1015_b5ff_34d10aace799 --> 54851997_7544_bab2_96ab_548e5f5df205
  1d3f1613_f144_938f_08f7_49039a46ad49["value-parser.ts"]
  bb501946_7944_1015_b5ff_34d10aace799 --> 1d3f1613_f144_938f_08f7_49039a46ad49
  d1b39b63_c9d5_6c28_0206_0ddc8b895876["walk.ts"]
  bb501946_7944_1015_b5ff_34d10aace799 --> d1b39b63_c9d5_6c28_0206_0ddc8b895876
  ed78da58_8727_ad98_120c_61f35cea357a["walk"]
  bb501946_7944_1015_b5ff_34d10aace799 --> ed78da58_8727_ad98_120c_61f35cea357a
  7b34c369_d799_30f1_b751_6e3fd5349f6b["WalkAction"]
  bb501946_7944_1015_b5ff_34d10aace799 --> 7b34c369_d799_30f1_b751_6e3fd5349f6b
  901927f2_bc06_7bba_3b59_6521372af070["."]
  bb501946_7944_1015_b5ff_34d10aace799 --> 901927f2_bc06_7bba_3b59_6521372af070
  7d223813_0df4_dfbe_850e_d5fd9ab81eef["migrate-import.ts"]
  7d223813_0df4_dfbe_850e_d5fd9ab81eef --> bb501946_7944_1015_b5ff_34d10aace799
  5af9cd3c_2cf4_9dee_376e_fc39122d865a["index.ts"]
  5af9cd3c_2cf4_9dee_376e_fc39122d865a --> bb501946_7944_1015_b5ff_34d10aace799
  style bb501946_7944_1015_b5ff_34d10aace799 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { Features } from '.'
import { atRule, context, type AstNode } from './ast'
import * as CSS from './css-parser'
import * as ValueParser from './value-parser'
import { walk, WalkAction } from './walk'

type LoadStylesheet = (
  id: string,
  basedir: string,
) => Promise<{
  path: string
  base: string
  content: string
}>

export async function substituteAtImports(
  ast: AstNode[],
  base: string,
  loadStylesheet: LoadStylesheet,
  recurseCount = 0,
  track = false,
) {
  let features = Features.None
  let promises: Promise<void>[] = []

  walk(ast, (node) => {
    if (node.kind === 'at-rule' && (node.name === '@import' || node.name === '@reference')) {
      let parsed = parseImportParams(ValueParser.parse(node.params))
      if (parsed === null) return
      if (node.name === '@reference') {
        parsed.media = 'reference'
      }

      features |= Features.AtImport

      let { uri, layer, media, supports } = parsed

      // Skip importing data or remote URIs
      if (uri.startsWith('data:')) return
      if (uri.startsWith('http://') || uri.startsWith('https://')) return

      let contextNode = context({}, [])

      promises.push(
        (async () => {
          // Since we do not have fully resolved paths in core, we can't
          // reliably detect circular imports. Instead, we try to limit the
          // recursion depth to a number that is too large to be reached in
          // practice.
          if (recurseCount > 100) {
            throw new Error(
              `Exceeded maximum recursion depth while resolving \`${uri}\` in \`${base}\`)`,
            )
          }

          let loaded = await loadStylesheet(uri, base)
          let ast = CSS.parse(loaded.content, { from: track ? loaded.path : undefined })
          await substituteAtImports(ast, loaded.base, loadStylesheet, recurseCount + 1, track)

          contextNode.nodes = buildImportNodes(
// ... (119 more lines)

Domain

Subdomains

Frequently Asked Questions

What does at-import.ts do?
at-import.ts is a source file in the tailwindcss codebase, written in typescript. It belongs to the OxideEngine domain, Scanner subdomain.
What functions are defined in at-import.ts?
at-import.ts defines 4 function(s): buildImportNodes, id, parseImportParams, substituteAtImports.
What does at-import.ts depend on?
at-import.ts imports 9 module(s): ., WalkAction, ast.ts, atRule, context, css-parser.ts, value-parser.ts, walk, and 1 more.
What files import at-import.ts?
at-import.ts is imported by 2 file(s): index.ts, migrate-import.ts.
Where is at-import.ts in the architecture?
at-import.ts is located at packages/tailwindcss/src/at-import.ts (domain: OxideEngine, subdomain: Scanner, directory: packages/tailwindcss/src).

Analyze Your Own Codebase

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

Try Supermodel Free