Home / File/ compare.ts — ui Source File

compare.ts — ui Source File

Architecture documentation for compare.ts, a typescript file in the ui codebase. 0 imports, 1 dependents.

File typescript FrameworkTooling TemplateSync 1 dependents 1 functions

Entity Profile

Dependency Diagram

graph LR
  d5d2f99b_9ade_1fed_4fc0_383bcc559cdd["compare.ts"]
  1734752f_152c_7d66_3858_3587b1cc5578["compare.test.ts"]
  1734752f_152c_7d66_3858_3587b1cc5578 --> d5d2f99b_9ade_1fed_4fc0_383bcc559cdd
  style d5d2f99b_9ade_1fed_4fc0_383bcc559cdd fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

export function isContentSame(
  existingContent: string,
  newContent: string,
  options: {
    ignoreImports?: boolean
  } = {}
) {
  const { ignoreImports = false } = options

  // Normalize line endings and whitespace.
  const normalizedExisting = existingContent.replace(/\r\n/g, "\n").trim()
  const normalizedNew = newContent.replace(/\r\n/g, "\n").trim()

  // First, try exact match after normalization.
  if (normalizedExisting === normalizedNew) {
    return true
  }

  // If not ignoring imports or exact match failed, return false
  if (!ignoreImports) {
    return false
  }

  // Compare with import statements normalized.
  // This regex matches various import patterns including:
  // - import defaultExport from "module"
  // - import * as name from "module"
  // - import { export1, export2 } from "module"
  // - import { export1 as alias1 } from "module"
  // - import defaultExport, { export1 } from "module"
  // - import type { Type } from "module"
  // - This Regex written by Claude Code.
  const importRegex =
    /^(import\s+(?:type\s+)?(?:\*\s+as\s+\w+|\{[^}]*\}|\w+)?(?:\s*,\s*(?:\{[^}]*\}|\w+))?\s+from\s+["'])([^"']+)(["'])/gm

  // Function to normalize import paths - remove alias differences.
  const normalizeImports = (content: string) => {
    return content.replace(
      importRegex,
      (_match, prefix, importPath, suffix) => {
        // Keep relative imports as-is.
        if (importPath.startsWith(".")) {
          return `${prefix}${importPath}${suffix}`
        }

        // For aliased imports, normalize to a common format.
        // Extract the last meaningful part of the path.
        const parts = importPath.split("/")
        const lastPart = parts[parts.length - 1]

        // Normalize to a consistent format.
        return `${prefix}@normalized/${lastPart}${suffix}`
      }
    )
  }

  const existingNormalized = normalizeImports(normalizedExisting)
  const newNormalized = normalizeImports(normalizedNew)

  return existingNormalized === newNormalized
}

Subdomains

Functions

Frequently Asked Questions

What does compare.ts do?
compare.ts is a source file in the ui codebase, written in typescript. It belongs to the FrameworkTooling domain, TemplateSync subdomain.
What functions are defined in compare.ts?
compare.ts defines 1 function(s): isContentSame.
What files import compare.ts?
compare.ts is imported by 1 file(s): compare.test.ts.
Where is compare.ts in the architecture?
compare.ts is located at packages/shadcn/src/utils/compare.ts (domain: FrameworkTooling, subdomain: TemplateSync, directory: packages/shadcn/src/utils).

Analyze Your Own Codebase

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

Try Supermodel Free