{"_id":"@baybreezy/file-extension-icon","_rev":"4-7254b9cb2215b8a23b567af4d42ab14c","name":"@baybreezy/file-extension-icon","dist-tags":{"latest":"0.0.5"},"versions":{"0.0.2":{"name":"@baybreezy/file-extension-icon","version":"0.0.2","keywords":["icon","material","vscode","file-extension","folder","typescript","esm"],"author":{"url":"https://behonbaker.com","name":"Behon Baker","email":"behon.baker@yahoo.com"},"license":"MIT","_id":"@baybreezy/file-extension-icon@0.0.2","maintainers":[{"name":"baybreezy","email":"behon.baker@yahoo.com"}],"homepage":"https://github.com/BayBreezy/file-extension-icon","bugs":{"url":"https://github.com/BayBreezy/file-extension-icon/issues"},"bin":{"file-icon":"dist/cli/index.js"},"dist":{"shasum":"f2a4d481321c7445e6fe4c1a9e9904ff2b23867e","tarball":"https://registry.npmjs.org/@baybreezy/file-extension-icon/-/file-extension-icon-0.0.2.tgz","fileCount":22,"integrity":"sha512-H4E08xP9cXv/B09pzsOSNwfBL8z+nAx60XJnCbWFFsARhHBv0DHwq6ytZDZ6ixLZ6+Vz6XcmsnfTohSRLoHURA==","signatures":[{"sig":"MEYCIQD8aV/P2ybSexUSbBdCDvE9SqJjkIN3L4kI9k3LY7QsVQIhAPNOdebIusKANq3Y+xJ9ecGNi/MjeoVGhEsvS+JqqHVE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@baybreezy%2ffile-extension-icon@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14094226},"main":"./dist/src/index.cjs","type":"module","types":"./dist/src/index.d.ts","module":"./dist/src/index.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","require":"./dist/src/index.cjs"}},"gitHead":"487d2bf985d5f71272d2726355d4e50b7e500c1b","scripts":{"dev":"tsdown --watch","knip":"knip","lint":"eslint src","test":"vitest","build":"tsdown","clean":"rm -rf dist coverage node_modules package-lock.json && ni && nr build","prepare":"husky","release":"changelogen --release && npm run build && npm publish","test:ui":"vitest --ui","typecheck":"tsc --noEmit","release:major":"changelogen --release --major","release:minor":"changelogen --release --minor","release:patch":"changelogen --release --patch","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"baybreezy","email":"behon.baker@yahoo.com"},"repository":{"url":"git+https://github.com/BayBreezy/file-extension-icon.git","type":"git"},"_npmVersion":"10.8.2","description":"Modern, lightweight package for folder and file extension specific Material icons and VSCode icons","directories":{},"lint-staged":{"*":"prettier --write .","*.{js,ts}":"eslint --fix"},"_nodeVersion":"20.19.5","_hasShrinkwrap":false,"packageManager":"npm@10.8.2","devDependencies":{"jiti":"^2.6.1","knip":"^5.65.0","husky":"^9.1.7","eslint":"^9.37.0","tsdown":"^0.15.7","vitest":"^3.2.4","globals":"^16.4.0","prettier":"^3.6.2","commander":"^14.0.1","@eslint/js":"^9.37.0","@vitest/ui":"^3.2.4","clipboardy":"^5.0.0","picocolors":"^1.1.1","typescript":"^5.9.3","@types/node":"^24.7.2","changelogen":"^0.6.2","lint-staged":"^16.2.4","@clack/prompts":"^0.11.0","@commitlint/cli":"^20.1.0","typescript-eslint":"^8.46.1","@vitest/coverage-v8":"^3.2.4","@commitlint/config-conventional":"^20.0.0","@ianvs/prettier-plugin-sort-imports":"^4.7.0"},"_npmOperationalInternal":{"tmp":"tmp/file-extension-icon_0.0.2_1760590549256_0.2953273159199348","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@baybreezy/file-extension-icon","version":"0.0.3","keywords":["icon","material","vscode","file-extension","folder","typescript","esm"],"author":{"url":"https://behonbaker.com","name":"Behon Baker","email":"behon.baker@yahoo.com"},"license":"MIT","_id":"@baybreezy/file-extension-icon@0.0.3","maintainers":[{"name":"baybreezy","email":"behon.baker@yahoo.com"}],"homepage":"https://github.com/BayBreezy/file-extension-icon","bugs":{"url":"https://github.com/BayBreezy/file-extension-icon/issues"},"bin":{"file-icon":"dist/cli/index.js"},"dist":{"shasum":"1988d562eae9992fc28e429058e9df10c4d497ac","tarball":"https://registry.npmjs.org/@baybreezy/file-extension-icon/-/file-extension-icon-0.0.3.tgz","fileCount":20,"integrity":"sha512-sSbhjpvvojIXSqS3TKWGmgXlRWVDOBYJBwjHNE+PeQlDWLaFrp2nbTHTgGLW1UjP91jmCfRpJ35LB1+ZuIFePA==","signatures":[{"sig":"MEQCIFSNlvi8394gCaSAmswJPb2GfpZrIcUp4nPMEqxvtgjsAiAotnSPxBuPi0f5zDTXfovqho0FvklqYCiUO0pSo+FA3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14090968},"main":"./dist/src/index.cjs","type":"module","types":"./dist/src/index.d.ts","module":"./dist/src/index.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js","require":"./dist/src/index.cjs"}},"gitHead":"edf9f1a531d0847d93688a9fdea762194c5df37f","scripts":{"dev":"tsdown --watch","knip":"knip","lint":"eslint src","test":"vitest","build":"tsdown","clean":"rm -rf dist coverage node_modules package-lock.json && ni && nr build","prepare":"husky","release":"changelogen --release --push && npm run build && npm publish","test:ui":"vitest --ui","typecheck":"tsc --noEmit","release:major":"changelogen --release --major","release:minor":"changelogen --release --minor","release:patch":"changelogen --release --patch","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"baybreezy","email":"behon.baker@yahoo.com"},"repository":{"url":"git+https://github.com/BayBreezy/file-extension-icon.git","type":"git"},"_npmVersion":"11.6.0","description":"Modern, lightweight package for folder and file extension specific Material icons and VSCode icons","directories":{},"lint-staged":{"*":"prettier --write .","*.{js,ts}":"eslint --fix"},"_nodeVersion":"24.10.0","_hasShrinkwrap":false,"packageManager":"npm@10.8.2","devDependencies":{"jiti":"^2.6.1","knip":"^5.69.1","husky":"^9.1.7","eslint":"^9.39.1","tsdown":"^0.16.4","vitest":"^4.0.9","globals":"^16.5.0","prettier":"^3.6.2","commander":"^14.0.2","@eslint/js":"^9.39.1","@vitest/ui":"^4.0.9","clipboardy":"^5.0.0","picocolors":"^1.1.1","typescript":"^5.9.3","@types/node":"^24.10.1","changelogen":"^0.6.2","lint-staged":"^16.2.6","@clack/prompts":"^0.11.0","@commitlint/cli":"^20.1.0","typescript-eslint":"^8.46.4","@vitest/coverage-v8":"^4.0.9","@commitlint/config-conventional":"^20.0.0","@ianvs/prettier-plugin-sort-imports":"^4.7.0"},"_npmOperationalInternal":{"tmp":"tmp/file-extension-icon_0.0.3_1763293266400_0.37523096977953707","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@baybreezy/file-extension-icon","version":"0.0.4","keywords":["icon","material","vscode","file-extension","folder","typescript","esm"],"author":{"url":"https://behonbaker.com","name":"Behon Baker","email":"behon.baker@yahoo.com"},"license":"MIT","_id":"@baybreezy/file-extension-icon@0.0.4","maintainers":[{"name":"baybreezy","email":"behon.baker@yahoo.com"}],"homepage":"https://github.com/BayBreezy/file-extension-icon","bugs":{"url":"https://github.com/BayBreezy/file-extension-icon/issues"},"bin":{"file-icon":"dist/cli/index.cjs"},"dist":{"shasum":"71e8da1b2d2c4f7a67d1e7c896db194efba20e4c","tarball":"https://registry.npmjs.org/@baybreezy/file-extension-icon/-/file-extension-icon-0.0.4.tgz","fileCount":20,"integrity":"sha512-MpATyPmIOR51m7IlvKK+/2pe2Twx0Sg4c8CN9vzIJbYdy4XNRPGnPYndOBX8eB+wfCMHIFyHyyzVBhUwqcHukQ==","signatures":[{"sig":"MEUCIBcZVoSAd/amyCDFSuSn6igcJBzmsnTGxqwta9AH9wrhAiEApgtAL0GRFS54S7VdTDA5YRoZ/OESrxMbfQXa0Q6Ui5E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14090976},"main":"./dist/src/index.cjs","type":"module","types":"./dist/src/index.d.mts","module":"./dist/src/index.mjs","exports":{".":{"types":"./dist/src/index.d.mts","import":"./dist/src/index.mjs","require":"./dist/src/index.cjs"}},"gitHead":"8f27745e18d43e1d71b4d3b5e61842c7f849910b","scripts":{"dev":"tsdown --watch","knip":"knip","lint":"eslint src","test":"vitest","build":"tsdown","clean":"rm -rf dist coverage node_modules package-lock.json && ni && nr build","prepare":"husky","release":"changelogen --release --push && npm run build && npm publish","test:ui":"vitest --ui","typecheck":"tsc --noEmit","release:major":"changelogen --release --major","release:minor":"changelogen --release --minor","release:patch":"changelogen --release --patch","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"baybreezy","email":"behon.baker@yahoo.com"},"repository":{"url":"git+https://github.com/BayBreezy/file-extension-icon.git","type":"git"},"_npmVersion":"11.6.3","description":"Modern, lightweight package for folder and file extension specific Material icons and VSCode icons","directories":{},"lint-staged":{"*":"prettier --write .","*.{js,ts}":"eslint --fix"},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"packageManager":"npm@11.6.3","devDependencies":{"jiti":"^2.6.1","knip":"^5.70.1","husky":"^9.1.7","eslint":"^9.39.1","tsdown":"^0.16.5","vitest":"^4.0.10","globals":"^16.5.0","prettier":"^3.6.2","commander":"^14.0.2","@eslint/js":"^9.39.1","@vitest/ui":"^4.0.10","clipboardy":"^5.0.0","picocolors":"^1.1.1","typescript":"^5.9.3","@types/node":"^24.10.1","changelogen":"^0.6.2","lint-staged":"^16.2.7","@clack/prompts":"^0.11.0","@commitlint/cli":"^20.1.0","typescript-eslint":"^8.47.0","@vitest/coverage-v8":"^4.0.10","@commitlint/config-conventional":"^20.0.0","@ianvs/prettier-plugin-sort-imports":"^4.7.0"},"_npmOperationalInternal":{"tmp":"tmp/file-extension-icon_0.0.4_1763606964268_0.9504061599504035","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@baybreezy/file-extension-icon","version":"0.0.5","description":"Modern, lightweight package for folder and file extension specific Material icons and VSCode icons","keywords":["icon","material","vscode","file-extension","folder","typescript","esm"],"homepage":"https://github.com/BayBreezy/file-extension-icon","bugs":{"url":"https://github.com/BayBreezy/file-extension-icon/issues"},"repository":{"type":"git","url":"git+https://github.com/BayBreezy/file-extension-icon.git"},"license":"MIT","author":{"name":"Behon Baker","email":"behon.baker@yahoo.com","url":"https://behonbaker.com"},"type":"module","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","require":"./dist/index.cjs"}},"main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.mts","bin":{"file-icon":"dist/cli/index.cjs"},"scripts":{"build":"tsdown","clean":"rm -rf dist coverage node_modules package-lock.json && ni && nr build","dev":"tsdown --watch","knip":"knip","lint":"eslint src","prepare":"husky","prepublishOnly":"npm run build","release":"changelogen --release --push && npm run build && npm publish","release:patch":"changelogen --release --patch","release:minor":"changelogen --release --minor","release:major":"changelogen --release --major","test":"vitest","test:coverage":"vitest --coverage","test:ui":"vitest --ui","typecheck":"tsc --noEmit"},"lint-staged":{"*.{js,ts}":"eslint --fix","*":"prettier --write ."},"devDependencies":{"@clack/prompts":"^1.3.0","@commitlint/cli":"^20.5.3","@commitlint/config-conventional":"^20.5.3","@eslint/js":"9.39.4","@ianvs/prettier-plugin-sort-imports":"^4.7.1","@types/node":"^25.6.0","@vitest/coverage-v8":"^4.1.5","@vitest/ui":"^4.1.5","changelogen":"^0.6.2","clipboardy":"^5.3.1","commander":"^14.0.3","eslint":"9.39.4","globals":"^17.6.0","husky":"^9.1.7","jiti":"^2.6.1","knip":"^6.11.0","lint-staged":"^16.4.0","picocolors":"^1.1.1","prettier":"^3.8.3","tsdown":"^0.21.10","typescript":"^6.0.3","typescript-eslint":"^8.59.1","vitest":"^4.1.5"},"packageManager":"npm@11.6.3","gitHead":"4325ac23c263176c6664ce6203407984e2caf0e4","_id":"@baybreezy/file-extension-icon@0.0.5","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-b2SQcZ6ClLaPaOQpKKcNMEN5Hc7AP7tww/PR/ihZeGW/9xkNgaN+YSxAePF3fMp+FblLY3yRK2Ym3ngyGmTssw==","shasum":"9dd990e3adf142af6e92304951903331d737b3a5","tarball":"https://registry.npmjs.org/@baybreezy/file-extension-icon/-/file-extension-icon-0.0.5.tgz","fileCount":13,"unpackedSize":17395135,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAuHniBUM6weMqVV1qX/lCNBg/EqaMxz/3wgdBnachoQAiBM1MG+6YgJafiJ7eXgZ9lpdgEhOdhvOJ4J49gCdbM0og=="}]},"_npmUser":{"name":"baybreezy","email":"behon.baker@yahoo.com"},"directories":{},"maintainers":[{"name":"baybreezy","email":"behon.baker@yahoo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/file-extension-icon_0.0.5_1777892769484_0.7841375129469561"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-16T04:55:49.140Z","modified":"2026-05-04T11:06:09.929Z","0.0.2":"2025-10-16T04:55:49.538Z","0.0.3":"2025-11-16T11:41:06.694Z","0.0.4":"2025-11-20T02:49:24.526Z","0.0.5":"2026-05-04T11:06:09.806Z"},"bugs":{"url":"https://github.com/BayBreezy/file-extension-icon/issues"},"author":{"name":"Behon Baker","email":"behon.baker@yahoo.com","url":"https://behonbaker.com"},"license":"MIT","homepage":"https://github.com/BayBreezy/file-extension-icon","keywords":["icon","material","vscode","file-extension","folder","typescript","esm"],"repository":{"type":"git","url":"git+https://github.com/BayBreezy/file-extension-icon.git"},"description":"Modern, lightweight package for folder and file extension specific Material icons and VSCode icons","maintainers":[{"name":"baybreezy","email":"behon.baker@yahoo.com"}],"readme":"# @baybreezy/file-extension-icon\n\n![Demo Cover Image](/cover.jpeg)\n\n> Modern, TypeScript-first package for file and folder extension-specific Material and VSCode icons\n\nA complete rewrite of [`file-extension-icon-js`](https://github.com/minhazmiraz/file-extension-icon-JS) using modern TypeScript, ESM-first approach, and the UnJS ecosystem for optimal performance and developer experience.\n\n[![npm version](https://img.shields.io/npm/v/@baybreezy/file-extension-icon)](https://www.npmjs.com/package/@baybreezy/file-extension-icon)\n[![npm bundle size](https://img.shields.io/bundlephobia/min/@baybreezy/file-extension-icon)](https://bundlephobia.com/package/@baybreezy/file-extension-icon)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## ✨ Features\n\n- 🎨 **Two icon themes**: Material Icon Theme & VSCode Icons\n- 🔷 **TypeScript**: Full type safety with comprehensive type definitions\n- 📦 **Zero dependencies**: No runtime dependencies\n- 🌳 **Tree-shakeable**: Only bundle what you use\n- 🔄 **Dual format**: ESM and CommonJS support\n- 🚀 **Modern build**: Built with Unbuild for optimal output\n- ✅ **Well-tested**: Comprehensive test coverage\n- 📝 **Well-documented**: Full JSDoc comments and examples\n- 🖥️ **CLI included**: Interactive terminal tool for browsing and exporting icons\n\n## 📦 Installation\n\n```bash\n# @antfu/ni\nnpx ni @baybreezy/file-extension-icon\n```\n\n## 🚀 Usage\n\n### Basic Usage\n\n```ts\nimport {\n  getMaterialFileIcon,\n  getMaterialFolderIcon,\n  getVSIFileIcon,\n  getVSIFolderIcon,\n} from \"@baybreezy/file-extension-icon\";\n\n// Get Material Design file icon\nconst jsIcon = getMaterialFileIcon(\"index.js\");\n// Returns: \"data:image/svg+xml;base64,...\"\n\n// Get Material Design folder icon (closed)\nconst folderIcon = getMaterialFolderIcon(\"components\");\n\n// Get Material Design folder icon (open)\nconst openFolderIcon = getMaterialFolderIcon(\"components\", true);\n\n// Get VSCode file icon\nconst tsIcon = getVSIFileIcon(\"app.ts\");\n\n// Get VSCode folder icon\nconst vsiFolderIcon = getVSIFolderIcon(\"src\", true);\n```\n\n### Framework Examples\n\n#### React / Vue / Svelte\n\n```tsx\nimport { getMaterialFileIcon } from \"@baybreezy/file-extension-icon\";\n\nfunction FileIcon({ fileName }: { fileName: string }) {\n  const icon = getMaterialFileIcon(fileName);\n\n  return <img src={icon} alt={fileName} width={24} height={24} />;\n}\n```\n\n#### HTML\n\n```html\n<script type=\"module\">\n  import { getMaterialFileIcon } from \"@baybreezy/file-extension-icon\";\n\n  const icon = getMaterialFileIcon(\"index.html\");\n  document.getElementById(\"icon\").src = icon;\n</script>\n\n<img id=\"icon\" alt=\"html\" width=\"24\" height=\"24\" />\n```\n\n### Advanced Usage\n\n```ts\nimport {\n  convertToBase64,\n  createDataUri,\n  findIconInCollection,\n  getIconFromMap,\n  getMaterialFileIcon,\n} from \"@baybreezy/file-extension-icon\";\n\n// The package intelligently matches file names\ngetMaterialFileIcon(\"app.component.ts\"); // Matches Angular component\ngetMaterialFileIcon(\"test.spec.ts\"); // Matches test file\ngetMaterialFileIcon(\"package.json\"); // Matches package.json\ngetMaterialFileIcon(\"Dockerfile\"); // Matches Docker\n\n// Works with any file extension\ngetMaterialFileIcon(\"script.py\");\ngetMaterialFileIcon(\"style.scss\");\ngetMaterialFileIcon(\"README.md\");\n```\n\n## 📚 API Reference\n\n### Material Icons\n\n#### `getMaterialFileIcon(fileName: string): string`\n\nReturns a base64-encoded SVG data URI for the given file name using the Material Icon theme.\n\n**Parameters:**\n\n- `fileName` (string): The file name with or without path (e.g., `\"index.js\"`, `\"src/app.ts\"`)\n\n**Returns:** Base64-encoded data URI string\n\n**Example:**\n\n```typescript\nconst icon = getMaterialFileIcon(\"index.js\");\n// => \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0...\"\n```\n\n#### `getMaterialFolderIcon(folderName: string, open?: boolean): string`\n\nReturns a base64-encoded SVG data URI for the given folder name using the Material Icon theme.\n\n**Parameters:**\n\n- `folderName` (string): The folder name\n- `open` (boolean, optional): Whether to return the open folder icon. Default: `false`\n\n**Returns:** Base64-encoded data URI string\n\n**Example:**\n\n```typescript\nconst closedIcon = getMaterialFolderIcon(\"components\");\nconst openIcon = getMaterialFolderIcon(\"components\", true);\n```\n\n### VSCode Icons\n\n#### `getVSIFileIcon(fileName: string): string`\n\nReturns a base64-encoded SVG data URI for the given file name using the VSCode Icon theme.\n\n**Parameters:**\n\n- `fileName` (string): The file name with or without path\n\n**Returns:** Base64-encoded data URI string\n\n#### `getVSIFolderIcon(folderName: string, open?: boolean): string`\n\nReturns a base64-encoded SVG data URI for the given folder name using the VSCode Icon theme.\n\n**Parameters:**\n\n- `folderName` (string): The folder name\n- `open` (boolean, optional): Whether to return the open folder icon. Default: `false`\n\n**Returns:** Base64-encoded data URI string\n\n### Utility Functions\n\nThe package also exports utility functions for advanced use cases:\n\n```typescript\nimport {\n  convertToBase64,\n  createDataUri,\n  findIconInCollection,\n  getIconFromMap,\n} from \"@baybreezy/file-extension-icon\";\n```\n\n## 🖥️ CLI Tool\n\nThis package includes an interactive CLI tool for browsing and exporting icons!\n\n```bash\n# Run interactively\nnpx file-icon\n\n# Or with flags for quick export\nnpx file-icon -t material -y file -n \"index.js\" --copy\n```\n\n### CLI Features\n\n- 🎨 Browse Material and VSCode icon themes\n- 🔍 Search by file/folder name or browse all icons\n- 📋 Copy to clipboard, save to file, or display in terminal\n- ⚡ Fast and beautiful UI powered by Clack\n\n[📖 Full CLI Documentation](./cli/README.md)\n\n## 📊 Bundle Size\n\nThis package contains comprehensive icon data for both Material and VSCode icon themes.\n\n- **Package size (compressed)**: ~2.6 MB\n- **Unpacked size**: ~8.6 MB\n- **Includes**: Thousands of file and folder icons\n\n> **Note**: Modern bundlers with tree-shaking can significantly reduce the final bundle size by including only the icons you use. Ensure your bundler is configured for tree-shaking to optimize bundle size.\n\n### Optimization Tips\n\n1. **Import only what you need:**\n\n   ```typescript\n   // ✅ Good - Tree-shakeable\n   import { getMaterialFileIcon } from \"@baybreezy/file-extension-icon\";\n   // ❌ Avoid - Imports everything\n   import * as Icons from \"@baybreezy/file-extension-icon\";\n   ```\n\n2. **Use modern bundlers** with tree-shaking support (Vite, Rollup, esbuild, webpack 5+)\n\n3. **Consider code splitting** if you support multiple icon themes\n\n## 🛠️ Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Build the package\nnpm run build\n\n# Run tests\nnpm test\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Run tests in UI mode\nnpm run test:ui\n\n# Type check\nnpm run typecheck\n\n# Lint code\nnpm run lint\n```\n\n## 🧪 Testing\n\nThis package includes comprehensive test coverage:\n\n```bash\n# Run tests in watch mode\nnpm test\n\n# Generate coverage report\nnpm run test:coverage\n\n# Open test UI\nnpm run test:ui\n```\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## 📄 License\n\nMIT © [Behon Baker](https://behonbaker.com)\n\n## 🙏 Credits & Acknowledgments\n\nThis package is a complete TypeScript rewrite of [`file-extension-icon-js`](https://github.com/minhazmiraz/file-extension-icon-JS) by [MD. Minhazul Islam](https://github.com/minhazmiraz).\n\n### Original Package\n\n- **Original Author**: [MD. Minhazul Islam](https://github.com/minhazmiraz)\n- **Original Package**: [file-extension-icon-js](https://github.com/minhazmiraz/file-extension-icon-JS)\n- **License**: MIT\n\n### Icon Sources\n\n- [Material Icon Theme](https://github.com/PKief/vscode-material-icon-theme) by Philipp Kief\n- [VSCode Icons](https://github.com/vscode-icons/vscode-icons) by VSCode Icons Team\n\n### Inspiration\n\n- [vscode-icons-js](https://github.com/dderevjanik/vscode-icons-js) by Dominik Dereǰanik\n- [file-icons-js](https://github.com/websemantics/file-icons-js) by Web Semantics\n\n## 🔗 Links\n\n- [GitHub Repository](https://github.com/BayBreezy/file-extension-icon)\n- [npm Package](https://www.npmjs.com/package/@baybreezy/file-extension-icon)\n- [Issue Tracker](https://github.com/BayBreezy/file-extension-icon/issues)\n- [Author Website](https://behonbaker.com)\n\n---\n\n<p align=\"center\">Made with ❤️ by <a href=\"https://behonbaker.com\">Behon Baker</a></p>\n","readmeFilename":"README.md"}