{"_id":"@bernierllc/license-manager","_rev":"8-26102302d8fd3aa89098642513c0d96e","name":"@bernierllc/license-manager","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"@bernierllc/license-manager","version":"0.1.0","keywords":["license","header","compliance","validation","template","copyright"],"author":{"name":"Bernier LLC"},"license":"Bernier LLC","_id":"@bernierllc/license-manager@0.1.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"f556b3f2c73dfe91a080744b3938022c7e7bf760","tarball":"https://registry.npmjs.org/@bernierllc/license-manager/-/license-manager-0.1.0.tgz","fileCount":19,"integrity":"sha512-o/dBtQbz4fws3n+vYWRPZXv+RA65MDJX8X6Qilx+dDt4/b6ekGTVmrV15YNcZ73mQOtnOhnEP8GWkjD6iLdsag==","signatures":[{"sig":"MEYCIQD/dCSruviCKjtdcmPiF0cGIFVrPRIX46Yxm5D/hnqIfAIhAOjd8tsx44WSukRGINc8fS/XV9kZVG5OM37UG/hnPpHa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63199},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"59d1c618de59b7cd157618c343ebf6ecaa6b8fc3","private":false,"scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rm -rf dist","type-check":"tsc --noEmit"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/license-manager"},"_npmVersion":"11.4.2","description":"Pure license management utilities for adding and validating license headers","directories":{},"_nodeVersion":"24.4.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/license-manager_0.1.0_1755554106106_0.02366907834330645","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@bernierllc/license-manager","version":"0.3.0","keywords":["license","header","compliance","validation","template","copyright"],"author":{"name":"Bernier LLC"},"license":"Bernier LLC","_id":"@bernierllc/license-manager@0.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"03de51acbe6614fe3b7e2fec815d6074b4ebf977","tarball":"https://registry.npmjs.org/@bernierllc/license-manager/-/license-manager-0.3.0.tgz","fileCount":19,"integrity":"sha512-tHoZDuNkS7uB3oiM37veg6+iFd6rR01QARowp3zPlSzh1TFSyi1r7tyWVoqwQ20bcwyKB2UN+57+CVzUe/qcVA==","signatures":[{"sig":"MEYCIQCTt8Un+itap3j78F4K5LyY6TF1EhbFoYxb2gJmAUMLwAIhANCUSQ5E/+er3cUevAS3qmgQHESULxt/Ab6sTqqJH2V/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63353},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","private":false,"scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rm -rf dist","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36463cca-c4dc-49d0-98d1-a15a43043304"}},"repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/license-manager"},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Pure license management utilities for adding and validating license headers","directories":{},"_nodeVersion":"20.19.6","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/license-manager_0.3.0_1767642310893_0.6203101661275809","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@bernierllc/license-manager","version":"0.3.1","keywords":["license","header","compliance","validation","template","copyright"],"author":{"name":"Bernier LLC"},"license":"Bernier LLC","_id":"@bernierllc/license-manager@0.3.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"92fc781bc989d36bf40d4e9030fe61bc2c0185ab","tarball":"https://registry.npmjs.org/@bernierllc/license-manager/-/license-manager-0.3.1.tgz","fileCount":19,"integrity":"sha512-ULN8koV+F8/e4ti64XzMyiUbpcmYqMIxnH5ngbo0/7YIrRC3vLSbgwwzJnH8FeEwqrlD47BGZtRSv5qaJqSwEA==","signatures":[{"sig":"MEYCIQCwWxUF2GnHcar/rWZ+RSjN4KblwVNjeF0c4HZ7Mo2wbAIhAM8zfgCvgjjyxa7KJu+1axHnFjYAhD56WJsdGcxsBc5m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63295},"main":"dist/index.js","_from":"file:bernierllc-license-manager-0.3.1.tgz","types":"dist/index.d.ts","private":false,"scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rm -rf dist","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36463cca-c4dc-49d0-98d1-a15a43043304"}},"_resolved":"/tmp/2448eabde0472d570dddb0bd0314b32d/bernierllc-license-manager-0.3.1.tgz","_integrity":"sha512-ULN8koV+F8/e4ti64XzMyiUbpcmYqMIxnH5ngbo0/7YIrRC3vLSbgwwzJnH8FeEwqrlD47BGZtRSv5qaJqSwEA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/license-manager"},"_npmVersion":"11.11.0","description":"Pure license management utilities for adding and validating license headers","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/license-manager_0.3.1_1773078020072_0.026697915381150183","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@bernierllc/license-manager","version":"0.3.2","keywords":["license","header","compliance","validation","template","copyright"],"author":{"name":"Bernier LLC"},"license":"Bernier LLC","_id":"@bernierllc/license-manager@0.3.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"a82e8816d8a45195bff51ef0976553a74c61f179","tarball":"https://registry.npmjs.org/@bernierllc/license-manager/-/license-manager-0.3.2.tgz","fileCount":19,"integrity":"sha512-bXgdS/HjlITCd1LkYmlY1QuLyf7+uK6VNOAyPjvbnB9FYmEbcvk6Yi4fIsNYwoVphjodpGLSRBWxNqceF+3RAg==","signatures":[{"sig":"MEUCIBs1B1FHtmeS0KjhJ3YNiQB/3PuXiICgMhbDj1A3TR3MAiEAvBNXhtzyy9KN4MCGjkpaYhsmZTml5hk9uzUkT55w2Dw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63295},"main":"dist/index.js","_from":"file:bernierllc-license-manager-0.3.2.tgz","types":"dist/index.d.ts","private":false,"scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rm -rf dist","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36463cca-c4dc-49d0-98d1-a15a43043304"}},"_resolved":"/tmp/88842dc5b1717eadfaf7a01f735719e0/bernierllc-license-manager-0.3.2.tgz","_integrity":"sha512-bXgdS/HjlITCd1LkYmlY1QuLyf7+uK6VNOAyPjvbnB9FYmEbcvk6Yi4fIsNYwoVphjodpGLSRBWxNqceF+3RAg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/license-manager"},"_npmVersion":"11.11.0","description":"Pure license management utilities for adding and validating license headers","directories":{},"_nodeVersion":"20.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/license-manager_0.3.2_1773081203643_0.18565259550800128","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@bernierllc/license-manager","version":"0.4.0","keywords":["license","header","compliance","validation","template","copyright"],"author":{"name":"Bernier LLC"},"license":"Bernier LLC","_id":"@bernierllc/license-manager@0.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"2fa53ac19a3faea664207f8e1d980dbbb11fb0fb","tarball":"https://registry.npmjs.org/@bernierllc/license-manager/-/license-manager-0.4.0.tgz","fileCount":19,"integrity":"sha512-Dr+N7m5Nmb0Vy4IAzngzIu7AiKejkMVgiy1sZFolRdD1k7iw53vKvoczz/TgqK6QLAIitKIT0/V751hredMPBA==","signatures":[{"sig":"MEQCIGB21BZqSxx7E1/aBWa1wGHOGnH7mURzp1G4WMdVeDtrAiBQ+03xai4imS6L8jwBuTY36X01QLcZZWzbcMY+hsV0Gg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63295},"main":"dist/index.js","_from":"file:bernierllc-license-manager-0.4.0.tgz","types":"dist/index.d.ts","private":false,"scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rm -rf dist","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36463cca-c4dc-49d0-98d1-a15a43043304"}},"_resolved":"/home/runner/work/tools/tools/packages/core/license-manager/bernierllc-license-manager-0.4.0.tgz","_integrity":"sha512-Dr+N7m5Nmb0Vy4IAzngzIu7AiKejkMVgiy1sZFolRdD1k7iw53vKvoczz/TgqK6QLAIitKIT0/V751hredMPBA==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/license-manager"},"_npmVersion":"11.14.1","description":"Pure license management utilities for adding and validating license headers","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/license-manager_0.4.0_1779241213073_0.8565047172705584","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@bernierllc/license-manager","version":"0.5.0","keywords":["license","header","compliance","validation","template","copyright"],"author":{"name":"Bernier LLC"},"license":"Bernier LLC","_id":"@bernierllc/license-manager@0.5.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"homepage":"https://github.com/bernierllc/tools#readme","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"dist":{"shasum":"fa2b866ff646742394e19db41f1457b816d5d373","tarball":"https://registry.npmjs.org/@bernierllc/license-manager/-/license-manager-0.5.0.tgz","fileCount":23,"integrity":"sha512-OOx36b1kIhOWQpxXZhWHGalbSwvscEyf7b2XlND0vM2Tgv+0fmFO/9X6ufFbgw/btfTL4VJcU57Yv42TO5mipg==","signatures":[{"sig":"MEUCIFnSIXR0otNIcbSnDJh1dRZtIsmYaqLaSKyK8Ape0UE6AiEA6fmb8t2q4VomX+zGNxb2PpjzJFyQ4oqtv3GU24F/sWg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66357},"main":"dist/index.js","_from":"file:bernierllc-license-manager-0.5.0.tgz","types":"dist/index.d.ts","private":false,"scripts":{"lint":"eslint src/**/*.ts","test":"jest","build":"tsc","clean":"rm -rf dist","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36463cca-c4dc-49d0-98d1-a15a43043304"}},"_resolved":"/home/runner/work/tools/tools/packages/core/license-manager/bernierllc-license-manager-0.5.0.tgz","_integrity":"sha512-OOx36b1kIhOWQpxXZhWHGalbSwvscEyf7b2XlND0vM2Tgv+0fmFO/9X6ufFbgw/btfTL4VJcU57Yv42TO5mipg==","repository":{"url":"git+https://github.com/bernierllc/tools.git","type":"git","directory":"packages/core/license-manager"},"_npmVersion":"11.14.1","description":"Pure license management utilities for adding and validating license headers","directories":{},"_nodeVersion":"20.20.2","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/license-manager_0.5.0_1779243227805_0.29445706226138246","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@bernierllc/license-manager","version":"0.6.0","private":false,"description":"Pure license management utilities for adding and validating license headers","main":"dist/index.js","types":"dist/index.d.ts","keywords":["license","header","compliance","validation","template","copyright"],"author":{"name":"Bernier LLC"},"license":"Bernier LLC","repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/core/license-manager"},"devDependencies":{"@types/jest":"^29.5.0","@types/node":"^20.0.0","jest":"^29.5.0","ts-jest":"^29.1.0","typescript":"^5.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","test":"jest","lint":"eslint src/**/*.ts","type-check":"tsc --noEmit","clean":"rm -rf dist"},"_id":"@bernierllc/license-manager@0.6.0","bugs":{"url":"https://github.com/bernierllc/tools/issues"},"homepage":"https://github.com/bernierllc/tools#readme","_integrity":"sha512-iTcNkkBBuYdi0CJFHIlu4LDnrArBs5dZXUrHFyR2lE6kRHmb87Ll3baFEK3VxJQIxgYmRNrnR94MC/mpawU3Cw==","_resolved":"/home/runner/work/tools/tools/packages/core/license-manager/bernierllc-license-manager-0.6.0.tgz","_from":"file:bernierllc-license-manager-0.6.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-iTcNkkBBuYdi0CJFHIlu4LDnrArBs5dZXUrHFyR2lE6kRHmb87Ll3baFEK3VxJQIxgYmRNrnR94MC/mpawU3Cw==","shasum":"87e5b934bc83916199b3430aecd50fe0dfb6972c","tarball":"https://registry.npmjs.org/@bernierllc/license-manager/-/license-manager-0.6.0.tgz","fileCount":23,"unpackedSize":66357,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDYkWDtE48HHak7V69sgqUJfD21LQwwClUlNR1JH72KvAiBtbEy5X+uVVmL8i8VEgUlDYwSMRsR82KuctX3ljPGbsQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:36463cca-c4dc-49d0-98d1-a15a43043304"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/license-manager_0.6.0_1779249959318_0.6212654358980796"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-18T21:55:06.006Z","modified":"2026-05-20T04:05:59.605Z","0.1.0":"2025-08-18T21:55:06.289Z","0.3.0":"2026-01-05T19:45:11.033Z","0.3.1":"2026-03-09T17:40:20.210Z","0.3.2":"2026-03-09T18:33:23.859Z","0.4.0":"2026-05-20T01:40:13.276Z","0.5.0":"2026-05-20T02:13:47.965Z","0.6.0":"2026-05-20T04:05:59.476Z"},"bugs":{"url":"https://github.com/bernierllc/tools/issues"},"author":{"name":"Bernier LLC"},"license":"Bernier LLC","homepage":"https://github.com/bernierllc/tools#readme","keywords":["license","header","compliance","validation","template","copyright"],"repository":{"type":"git","url":"git+https://github.com/bernierllc/tools.git","directory":"packages/core/license-manager"},"description":"Pure license management utilities for adding and validating license headers","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/license-manager\n\nPure license management utilities for adding and validating license headers across different file types.\n\n## Features\n\n- **File Type Detection**: Automatically detects file types and applies appropriate license formats\n- **Multiple License Formats**: Supports C-style comments, Python docstrings, HTML comments, and more\n- **License Validation**: Validates existing license headers for compliance\n- **Directory Scanning**: Scans entire directories for license compliance\n- **Customizable Templates**: Configurable license templates and file type mappings\n- **Dry Run Mode**: Preview changes without modifying files\n- **Comprehensive Testing**: Full test coverage with mocked file system\n\n## Installation\n\n```bash\nnpm install @bernierllc/license-manager\n```\n\n## Quick Start\n\n```typescript\nimport { LicenseManager } from '@bernierllc/license-manager';\n\nconst licenseManager = new LicenseManager();\n\n// Add license header to a file\nconst success = licenseManager.addLicenseHeader('src/my-file.js');\n\n// Validate existing license header\nconst validation = licenseManager.validateLicenseHeader('src/my-file.js');\nconsole.log('Has license:', validation.hasLicense);\nconsole.log('Is valid:', validation.isValid);\n\n// Scan directory for compliance\nconst scanResult = licenseManager.scanDirectory('./src');\nconsole.log('Compliance rate:', scanResult.complianceRate);\n```\n\n## API Reference\n\n### LicenseManager\n\nMain class for license management operations.\n\n#### Constructor\n\n```typescript\nnew LicenseManager(config?: Partial<LicenseTemplateConfig>)\n```\n\nCreates a new license manager instance with optional custom configuration.\n\n#### Methods\n\n##### `detectFileType(filePath: string): FileType`\n\nDetects the file type based on file extension.\n\n```typescript\nconst fileType = licenseManager.detectFileType('src/component.tsx');\n// Returns: 'tsx'\n```\n\n##### `getLicenseTemplate(fileType: FileType, options?: LicenseHeaderOptions): LicenseTemplate`\n\nGets the appropriate license template for a file type.\n\n```typescript\nconst template = licenseManager.getLicenseTemplate('js', {\n  copyrightYear: 2024,\n  companyName: 'My Company'\n});\n```\n\n##### `generateLicenseHeader(filePath: string, options?: LicenseHeaderOptions): string`\n\nGenerates a license header for a specific file.\n\n```typescript\nconst header = licenseManager.generateLicenseHeader('src/file.js');\n// Returns: \"/*\\nCopyright (c) 2025 Bernier LLC\\n...\\n*/\\n\\n\"\n```\n\n##### `validateLicenseHeader(filePath: string, options?: LicenseHeaderOptions): LicenseValidationResult`\n\nValidates if a file has the correct license header.\n\n```typescript\nconst result = licenseManager.validateLicenseHeader('src/file.js');\nconsole.log(result.hasLicense); // boolean\nconsole.log(result.isValid); // boolean\nconsole.log(result.errors); // string[]\n```\n\n##### `addLicenseHeader(filePath: string, options?: LicenseHeaderOptions): boolean`\n\nAdds a license header to a file if it doesn't already have one.\n\n```typescript\nconst success = licenseManager.addLicenseHeader('src/file.js', {\n  dryRun: true // Preview without writing\n});\n```\n\n##### `scanDirectory(dirPath: string, options?: LicenseHeaderOptions): LicenseScanResult`\n\nScans a directory for license compliance.\n\n```typescript\nconst result = licenseManager.scanDirectory('./src');\nconsole.log(`Compliance: ${result.complianceRate}%`);\nconsole.log(`Files with license: ${result.filesWithLicense}`);\nconsole.log(`Files missing license: ${result.filesWithoutLicense}`);\n```\n\n##### `getConfig(): LicenseTemplateConfig`\n\nReturns the current configuration.\n\n##### `updateConfig(newConfig: Partial<LicenseTemplateConfig>): void`\n\nUpdates the configuration.\n\n## Supported File Types\n\nThe license manager supports a wide range of file types with appropriate license formats:\n\n### C-Style Comments (/* */)\n- JavaScript (.js, .jsx)\n- TypeScript (.ts, .tsx)\n- CSS (.css)\n- SQL (.sql)\n- Shell scripts (.sh, .bash)\n- C/C++ (.c, .cpp, .h, .hpp)\n- Java (.java)\n- PHP (.php)\n- Ruby (.rb)\n- Go (.go)\n- Rust (.rs)\n- Swift (.swift)\n- Kotlin (.kt)\n- Scala (.scala)\n- And many more...\n\n### Python Docstrings (\"\"\")\n- Python (.py)\n\n### HTML Comments (<!-- -->)\n- HTML (.html)\n\n### No License Required\n- Log files (.log)\n- Lock files (.lock)\n- Source maps (.map)\n\n## Configuration\n\n### LicenseTemplateConfig\n\n```typescript\ninterface LicenseTemplateConfig {\n  templates: Record<string, LicenseTemplate>;\n  defaultTemplate: string;\n  fileTypeMapping: Record<FileType, string>;\n  excludePatterns: string[];\n  includePatterns: string[];\n}\n```\n\n### Custom Configuration Example\n\n```typescript\nconst customConfig: Partial<LicenseTemplateConfig> = {\n  templates: {\n    'mit': {\n      text: 'MIT License\\nCopyright (c) 2025 Your Company',\n      format: 'c-style',\n      startDelimiter: '/*',\n      endDelimiter: '*/'\n    }\n  },\n  fileTypeMapping: {\n    'js': 'mit',\n    'ts': 'mit'\n  },\n  excludePatterns: [\n    'node_modules/**',\n    'dist/**',\n    'build/**'\n  ]\n};\n\nconst licenseManager = new LicenseManager(customConfig);\n```\n\n## License Header Options\n\n### LicenseHeaderOptions\n\n```typescript\ninterface LicenseHeaderOptions {\n  copyrightYear?: number;\n  companyName?: string;\n  licenseType?: 'limited-use' | 'mit' | 'apache' | 'gpl' | 'custom';\n  customText?: string;\n  skipFiles?: string[];\n  includeFiles?: string[];\n  dryRun?: boolean;\n}\n```\n\n### Options Example\n\n```typescript\nconst options: LicenseHeaderOptions = {\n  copyrightYear: 2024,\n  companyName: 'My Company',\n  dryRun: true, // Preview changes\n  skipFiles: ['generated.js', 'vendor/**']\n};\n\nlicenseManager.addLicenseHeader('src/file.js', options);\n```\n\n## Examples\n\n### Add License to Single File\n\n```typescript\nimport { LicenseManager } from '@bernierllc/license-manager';\n\nconst licenseManager = new LicenseManager();\n\n// Add license header\nconst success = licenseManager.addLicenseHeader('src/my-component.tsx');\nif (success) {\n  console.log('License header added successfully');\n} else {\n  console.log('Failed to add license header');\n}\n```\n\n### Validate License Compliance\n\n```typescript\nconst validation = licenseManager.validateLicenseHeader('src/file.js');\n\nif (!validation.hasLicense) {\n  console.log('❌ No license header found');\n  console.log('Expected:', validation.expectedText);\n} else if (!validation.isValid) {\n  console.log('⚠️  Invalid license header');\n  validation.errors.forEach(error => console.log(`  - ${error}`));\n} else {\n  console.log('✅ Valid license header');\n}\n```\n\n### Scan Project for Compliance\n\n```typescript\nconst scanResult = licenseManager.scanDirectory('./src');\n\nconsole.log(`📊 License Compliance Report`);\nconsole.log(`Total files: ${scanResult.totalFiles}`);\nconsole.log(`Files with license: ${scanResult.filesWithLicense}`);\nconsole.log(`Files without license: ${scanResult.filesWithoutLicense}`);\nconsole.log(`Compliance rate: ${scanResult.complianceRate.toFixed(1)}%`);\n\nif (scanResult.summary.missing.length > 0) {\n  console.log('\\n❌ Files missing license:');\n  scanResult.summary.missing.forEach(file => console.log(`  - ${file}`));\n}\n\nif (scanResult.summary.invalid.length > 0) {\n  console.log('\\n⚠️  Files with invalid license:');\n  scanResult.summary.invalid.forEach(file => console.log(`  - ${file}`));\n}\n```\n\n### Batch Add Licenses\n\n```typescript\nconst files = [\n  'src/components/Button.tsx',\n  'src/utils/helpers.ts',\n  'src/styles/main.css'\n];\n\nfiles.forEach(file => {\n  const success = licenseManager.addLicenseHeader(file, { dryRun: false });\n  console.log(`${file}: ${success ? '✅' : '❌'}`);\n});\n```\n\n### Custom License Template\n\n```typescript\nconst customManager = new LicenseManager({\n  templates: {\n    'custom': {\n      text: `/*\nCopyright (c) 2025 Custom Company\n\nThis software is proprietary and confidential.\nUnauthorized copying is prohibited.\n*/`,\n      format: 'c-style',\n      startDelimiter: '/*',\n      endDelimiter: '*/'\n    }\n  },\n  fileTypeMapping: {\n    'js': 'custom',\n    'ts': 'custom'\n  }\n});\n```\n\n## Testing\n\nThe package includes comprehensive tests with mocked file system:\n\n```bash\nnpm test\n```\n\n### Test Coverage\n\n- File type detection\n- License template generation\n- License validation\n- File operations (read/write)\n- Directory scanning\n- Configuration management\n- Error handling\n\n## Error Handling\n\nThe license manager provides detailed error information:\n\n```typescript\nconst validation = licenseManager.validateLicenseHeader('src/file.js');\n\nif (validation.errors.length > 0) {\n  console.log('Validation errors:');\n  validation.errors.forEach(error => console.log(`  - ${error}`));\n}\n\nif (validation.warnings.length > 0) {\n  console.log('Validation warnings:');\n  validation.warnings.forEach(warning => console.log(`  - ${warning}`));\n}\n```\n\n## Best Practices\n\n1. **Use Dry Run First**: Always test with `dryRun: true` before making changes\n2. **Exclude Generated Files**: Configure exclude patterns for build outputs\n3. **Customize for Your Project**: Update company name and copyright year\n4. **Regular Compliance Checks**: Scan your project regularly for license compliance\n5. **Handle Errors Gracefully**: Check return values and handle file system errors\n\n## Contributing\n\nThis package is part of the Bernier LLC tools ecosystem. Please follow the project's contribution guidelines.\n\n## License\n\nThis package is licensed under the same terms as the project it's delivered for. See the license header in source files for details. ","readmeFilename":"README.md"}