@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
29 lines (27 loc) • 1.36 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
//#region src/writeContentDeclaration/detectExportedComponentName.ts
/**
* Attempt to detect an exported React component name in the file text.
* Looks for patterns like:
* - export const MyComponent = ...
* - export function MyComponent(...)
* - export default function MyComponent(...)
*/
const detectExportedComponentName = (fileText) => {
const defaultEsmFnRegex = /export\s+default\s+function\s+(\w+)/;
const defaultEsmVarRegex = /export\s+default\s+(\w+)/;
const cjsDefaultRegex = /module\.exports\s*=\s*(\w+)/;
const cjsDefaultVarRegex = /exports\.default\s*=\s*(\w+)/;
const namedExportRegex = /export\s+(?:const|function)\s+(\w+)/g;
const defaultEsmFnMatch = fileText.match(defaultEsmFnRegex);
if (defaultEsmFnMatch) return defaultEsmFnMatch[1];
const defaultEsmVarMatch = fileText.match(defaultEsmVarRegex);
if (defaultEsmVarMatch) return defaultEsmVarMatch[1];
const cjsDefaultMatch = fileText.match(cjsDefaultRegex) || fileText.match(cjsDefaultVarRegex);
if (cjsDefaultMatch) return cjsDefaultMatch[1];
for (const match of fileText.matchAll(namedExportRegex)) if (/^[A-Z]/.test(match[1])) return match[1];
return null;
};
//#endregion
exports.detectExportedComponentName = detectExportedComponentName;
//# sourceMappingURL=detectExportedComponentName.cjs.map