MCPcopy
hub / github.com/FlowiseAI/Flowise / convertRequireToImport

Function convertRequireToImport

packages/components/src/utils.ts:1521–1549  ·  view source on GitHub ↗
(requireLine: string)

Source from the content-addressed store, hash-verified

1519
1520// Helper function to convert require statements to ESM imports
1521export const convertRequireToImport = (requireLine: string): string | null => {
1522 // Remove leading/trailing whitespace and get the indentation
1523 const indent = requireLine.match(/^(\s*)/)?.[1] || ''
1524 const trimmed = requireLine.trim()
1525
1526 // Match patterns like: const/let/var name = require('module')
1527 const defaultRequireMatch = trimmed.match(/^(const|let|var)\s+(\w+)\s*=\s*require\s*\(\s*['"`]([^'"`]+)['"`]\s*\)/)
1528 if (defaultRequireMatch) {
1529 const [, , varName, moduleName] = defaultRequireMatch
1530 return `${indent}import ${varName} from '${moduleName}';`
1531 }
1532
1533 // Match patterns like: const { name1, name2 } = require('module')
1534 const destructureMatch = trimmed.match(/^(const|let|var)\s+\{([^}]+)\}\s*=\s*require\s*\(\s*['"`]([^'"`]+)['"`]\s*\)/)
1535 if (destructureMatch) {
1536 const [, , destructuredVars, moduleName] = destructureMatch
1537 return `${indent}import { ${destructuredVars.trim()} } from '${moduleName}';`
1538 }
1539
1540 // Match patterns like: const name = require('module').property
1541 const propertyMatch = trimmed.match(/^(const|let|var)\s+(\w+)\s*=\s*require\s*\(\s*['"`]([^'"`]+)['"`]\s*\)\.(\w+)/)
1542 if (propertyMatch) {
1543 const [, , varName, moduleName, property] = propertyMatch
1544 return `${indent}import { ${property} as ${varName} } from '${moduleName}';`
1545 }
1546
1547 // If no pattern matches, return null to skip conversion
1548 return null
1549}
1550
1551/**
1552 * Parse output if it's a stringified JSON or array

Callers 2

utils.test.tsFile · 0.90
executeJavaScriptCodeFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected