{"_id":"@alihxn/ts-lambda-hot-reload","_rev":"7-6cf13bf409750fe9a3b84528b424f808","name":"@alihxn/ts-lambda-hot-reload","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"@alihxn/ts-lambda-hot-reload","version":"1.0.0","keywords":[],"author":{"name":"Muhammad Ali Hasan"},"license":"ISC","_id":"@alihxn/ts-lambda-hot-reload@1.0.0","maintainers":[{"name":"alihxn","email":"alihasan9923@gmail.com"}],"homepage":"https://github.com/alihxn23/ts-lambda-hot-reload#readme","bugs":{"url":"https://github.com/alihxn23/ts-lambda-hot-reload/issues"},"bin":{"ts-lambda-hot-reload":"index.js"},"dist":{"shasum":"cf83a44cc736e214b7bf1b37ff0557bb42477698","tarball":"https://registry.npmjs.org/@alihxn/ts-lambda-hot-reload/-/ts-lambda-hot-reload-1.0.0.tgz","fileCount":6,"integrity":"sha512-TwGIJfw3yB8NiIIgYORC66Spiouo6h787ccm77rfUHeuMUacIchlK+bL2JZUYj1mvKJ1C7bqnMjr9EPy/BryTw==","signatures":[{"sig":"MEQCIEAPuj8k9cTFh5KipR0qTu/DafAS4wwXFJU0/e46TLzPAiAn5lrMy5S/PnPeuVB+bnN04WYZf4i9ghtXVuRvLSKV+w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6024},"main":"index.js","type":"module","gitHead":"545848601f128ff17ef8ecf772337504827c696f","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"alihxn","email":"alihasan9923@gmail.com"},"repository":{"url":"git+https://github.com/alihxn23/ts-lambda-hot-reload.git"},"_npmVersion":"10.8.2","description":"`npx ts-lambda-hot-reload`","directories":{},"_nodeVersion":"20.18.1","dependencies":{"yaml":"^2.6.1","nodemon":"^3.1.9","fuzzysort":"^3.1.0","directory-tree":"^3.5.2","@inquirer/prompts":"^7.2.1"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ts-lambda-hot-reload_1.0.0_1735430461381_0.29018283220619234","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@alihxn/ts-lambda-hot-reload","version":"1.0.5","keywords":[],"author":{"name":"Muhammad Ali Hasan"},"license":"ISC","_id":"@alihxn/ts-lambda-hot-reload@1.0.5","maintainers":[{"name":"alihxn","email":"alihasan9923@gmail.com"}],"homepage":"https://github.com/alihxn23/ts-lambda-hot-reload#readme","bugs":{"url":"https://github.com/alihxn23/ts-lambda-hot-reload/issues"},"bin":{"ts-lambda-hot-reload":"index.js"},"dist":{"shasum":"e265e561085ac93722cbdae2ad7adcfa107d65db","tarball":"https://registry.npmjs.org/@alihxn/ts-lambda-hot-reload/-/ts-lambda-hot-reload-1.0.5.tgz","fileCount":6,"integrity":"sha512-RUGsa52cZd77UPQELB7Q+Z0Y0q97mXELAyaK6PFzxsjxsc25ee/02ubqt1CzaAWTdUFIM/J6+MX5OMqHMGnk+g==","signatures":[{"sig":"MEUCIQDd0XixnaLO0ii0tDhXHsQW0q+aepBsi/eno/49uLsOVgIgXZAq2l7HiFhERx5wXlRfHUgoiskFn2/kFL0ea90pr00=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6053},"main":"index.js","type":"module","gitHead":"88f9f42710bb75362a208a99ff7e3ab07b0e078c","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"alihxn","email":"alihasan9923@gmail.com"},"repository":{"url":"git+https://github.com/alihxn23/ts-lambda-hot-reload.git"},"_npmVersion":"10.8.2","description":"`npx ts-lambda-hot-reload`","directories":{},"_nodeVersion":"20.18.1","dependencies":{"yaml":"^2.6.1","nodemon":"^3.1.9","fuzzysort":"^3.1.0","directory-tree":"^3.5.2","@inquirer/prompts":"^7.2.1"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ts-lambda-hot-reload_1.0.5_1735433543624_0.7927352732115971","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@alihxn/ts-lambda-hot-reload","version":"1.0.7","keywords":[],"author":{"name":"Muhammad Ali Hasan"},"license":"ISC","_id":"@alihxn/ts-lambda-hot-reload@1.0.7","maintainers":[{"name":"alihxn","email":"alihasan9923@gmail.com"}],"homepage":"https://github.com/alihxn23/ts-lambda-hot-reload#readme","bugs":{"url":"https://github.com/alihxn23/ts-lambda-hot-reload/issues"},"bin":{"ts-lambda-hot-reload":"index.js"},"dist":{"shasum":"a235344bff7e0ee7f520370c522aba5eb1cf747b","tarball":"https://registry.npmjs.org/@alihxn/ts-lambda-hot-reload/-/ts-lambda-hot-reload-1.0.7.tgz","fileCount":6,"integrity":"sha512-zHhTX1Tzw1Hxbu0sZcwAEXN7fc3oxRRtMD2nJ1TVPatlxRJ/X5QEIeVaNY7a+Zi+EfqPChGbaKFFc9CIs+o8sQ==","signatures":[{"sig":"MEYCIQDvMOFzlmJp6gZUQyLRKFdisL0QUtkg6Rkvh3JSH94NFwIhAMJxzSjv9Ywip026edpcVSiHOs8ogLdUj+IMgDCuS3f9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6053},"main":"index.js","type":"module","gitHead":"16efea9e105a564fac618f48bef928072c8e8ea7","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"alihxn","email":"alihasan9923@gmail.com"},"repository":{"url":"git+https://github.com/alihxn23/ts-lambda-hot-reload.git"},"_npmVersion":"10.8.2","description":"`npx ts-lambda-hot-reload`","directories":{},"_nodeVersion":"20.18.1","dependencies":{"yaml":"^2.7.0","nodemon":"^3.1.9","fuzzysort":"^3.1.0","directory-tree":"^3.5.2","@inquirer/prompts":"^7.2.1"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ts-lambda-hot-reload_1.0.7_1737598945904_0.8180550301833096","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@alihxn/ts-lambda-hot-reload","version":"1.0.8","keywords":[],"author":{"name":"Muhammad Ali Hasan"},"license":"ISC","_id":"@alihxn/ts-lambda-hot-reload@1.0.8","maintainers":[{"name":"alihxn","email":"alihasan9923@gmail.com"}],"homepage":"https://github.com/alihxn23/ts-lambda-hot-reload#readme","bugs":{"url":"https://github.com/alihxn23/ts-lambda-hot-reload/issues"},"bin":{"ts-lambda-hot-reload":"index.js"},"dist":{"shasum":"ee635454a1e9f33ee53e25c753295bd5a40780ee","tarball":"https://registry.npmjs.org/@alihxn/ts-lambda-hot-reload/-/ts-lambda-hot-reload-1.0.8.tgz","fileCount":6,"integrity":"sha512-eL/pg2XrGhe2M6iNIUJdhIS5P58nTpPolr/d+OWdwpPr+m3eJt8Ezd5eNE0yzi/i3YVTi64tF2LFvyAwt+Ewng==","signatures":[{"sig":"MEUCIF77F/83DQ3Yyz6mqxW/B4CWVMkoW/IHUKTpExpDGWSSAiEA+duCQCHQZCTUQe6GA65/m9nkqN+LrvpP/y+ywEL45z4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6273},"main":"index.js","type":"module","gitHead":"be6a0eb47b3ead18ad883e2e63d3bbfa269f34ef","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"alihxn","email":"alihasan9923@gmail.com"},"repository":{"url":"git+https://github.com/alihxn23/ts-lambda-hot-reload.git"},"_npmVersion":"10.8.2","description":"`npx ts-lambda-hot-reload`","directories":{},"_nodeVersion":"20.18.2","dependencies":{"yaml":"^2.7.0","nodemon":"^3.1.9","fuzzysort":"^3.1.0","directory-tree":"^3.5.2","@inquirer/prompts":"^7.2.3"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ts-lambda-hot-reload_1.0.8_1738865600543_0.589500161043359","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@alihxn/ts-lambda-hot-reload","version":"1.1.0","keywords":[],"author":{"name":"Muhammad Ali Hasan"},"license":"ISC","_id":"@alihxn/ts-lambda-hot-reload@1.1.0","maintainers":[{"name":"alihxn","email":"alihasan9923@gmail.com"}],"homepage":"https://github.com/alihxn23/ts-lambda-hot-reload#readme","bugs":{"url":"https://github.com/alihxn23/ts-lambda-hot-reload/issues"},"bin":{"ts-lambda-hot-reload":"index.js"},"dist":{"shasum":"0b0f7321cbf9aae222ae392d616ca18157d395a5","tarball":"https://registry.npmjs.org/@alihxn/ts-lambda-hot-reload/-/ts-lambda-hot-reload-1.1.0.tgz","fileCount":6,"integrity":"sha512-uCBKLiCsPFygPkxYs1goxCfX/4cg3T60PLhezOitLQ1/yAfFNMZZAETUV7+oIKpocf+f5YuQNoLDMcnS7gk0Kg==","signatures":[{"sig":"MEUCIQCUy3wyBAEOK68hcus1cCyEYIcTKnqiBkyWH4xdderX3AIgfPPuK2qFuSP17BFPUk3Q+7D7Yu53EMWvk5CKvWW3q18=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7588},"main":"index.js","type":"module","gitHead":"ea744682151e49499be7d2b57e3a925c9764f15d","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"alihxn","email":"alihasan9923@gmail.com"},"repository":{"url":"git+https://github.com/alihxn23/ts-lambda-hot-reload.git"},"_npmVersion":"10.8.2","description":"`npx ts-lambda-hot-reload`","directories":{},"_nodeVersion":"20.18.2","dependencies":{"yaml":"^2.7.0","esbuild":"^0.25.0","nodemon":"^3.1.9","@inquirer/prompts":"^7.2.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ts-lambda-hot-reload_1.1.0_1740281926192_0.5780947603116884","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@alihxn/ts-lambda-hot-reload","version":"1.1.1","keywords":[],"author":{"name":"Muhammad Ali Hasan"},"license":"ISC","_id":"@alihxn/ts-lambda-hot-reload@1.1.1","maintainers":[{"name":"alihxn","email":"alihasan9923@gmail.com"}],"homepage":"https://github.com/alihxn23/ts-lambda-hot-reload#readme","bugs":{"url":"https://github.com/alihxn23/ts-lambda-hot-reload/issues"},"bin":{"ts-lambda-hot-reload":"index.js"},"dist":{"shasum":"c50a3803c75a6c54559ce62bfd645419cd1a4363","tarball":"https://registry.npmjs.org/@alihxn/ts-lambda-hot-reload/-/ts-lambda-hot-reload-1.1.1.tgz","fileCount":6,"integrity":"sha512-pq4k4u7Ba7P/eX8h5tpN2eTAWt9wYA/rKX/LovoMRftnunb5/bmYSoLJMH3QJc/oJsvFplgF2hpM/3NJLt7ZxQ==","signatures":[{"sig":"MEYCIQDNFEVnq6NSzcdvmd1kfWLzo1tPudD4IkgU2kXwju+mqwIhAO0bZMrqXeGHmZUlPTCrs493IXop8mTeBA4s6jMQVqSI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7635},"main":"index.js","type":"module","gitHead":"916a37824243355a77f55283d20d723b6e04b4aa","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"alihxn","email":"alihasan9923@gmail.com"},"repository":{"url":"git+https://github.com/alihxn23/ts-lambda-hot-reload.git"},"_npmVersion":"10.8.2","description":"`npx ts-lambda-hot-reload`","directories":{},"_nodeVersion":"20.18.2","dependencies":{"yaml":"^2.7.0","esbuild":"^0.25.0","nodemon":"^3.1.9","@inquirer/prompts":"^7.2.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/ts-lambda-hot-reload_1.1.1_1740283507664_0.5885811120496651","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@alihxn/ts-lambda-hot-reload","version":"1.3.0","description":"`npx ts-lambda-hot-reload`","main":"index.js","scripts":{"test":"vitest --run","test:watch":"vitest"},"type":"module","bin":{"ts-lambda-hot-reload":"index.js"},"keywords":[],"author":{"name":"Muhammad Ali Hasan"},"repository":{"url":"git+https://github.com/alihxn23/ts-lambda-hot-reload.git"},"license":"ISC","dependencies":{"@inquirer/prompts":"^7.2.3","esbuild":"^0.25.0","nodemon":"^3.1.9","yaml":"^2.7.0"},"devDependencies":{"vitest":"^1.0.0","fast-check":"^3.15.0","@types/aws-lambda":"^8.10.0"},"bugs":{"url":"https://github.com/alihxn23/ts-lambda-hot-reload/issues"},"homepage":"https://github.com/alihxn23/ts-lambda-hot-reload#readme","_id":"@alihxn/ts-lambda-hot-reload@1.3.0","gitHead":"5ad5e2802147ee58ada72b0d935502f3aa9b697e","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-x8K98nNAFTnFMZnmIsf+w5/Ax4YXWoUgmWMWzTLmEOt2lgmZgesyd1YwgsiyLOm90/zF+n3LBVgUmfxWmR0UGQ==","shasum":"4aee94ac87b3bb0f47ba7f4e8c6619e3be0ff849","tarball":"https://registry.npmjs.org/@alihxn/ts-lambda-hot-reload/-/ts-lambda-hot-reload-1.3.0.tgz","fileCount":31,"unpackedSize":292695,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIG5s0YHVJKodPfXje6nkfxT5eGJPRRc9Bj7y4/1uCsUOAiAc3NdTVYDsea2ZKsYnblbAlSPjz38Dyz1Impk1qkp1yg=="}]},"_npmUser":{"name":"alihxn","email":"alihasan9923@gmail.com"},"directories":{},"maintainers":[{"name":"alihxn","email":"alihasan9923@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ts-lambda-hot-reload_1.3.0_1769918878102_0.501292991915077"},"_hasShrinkwrap":false}},"time":{"created":"2024-12-29T00:01:01.257Z","modified":"2026-02-01T04:07:58.344Z","1.0.0":"2024-12-29T00:01:01.571Z","1.0.5":"2024-12-29T00:52:23.839Z","1.0.7":"2025-01-23T02:22:26.076Z","1.0.8":"2025-02-06T18:13:20.730Z","1.1.0":"2025-02-23T03:38:46.387Z","1.1.1":"2025-02-23T04:05:07.884Z","1.3.0":"2026-02-01T04:07:58.246Z"},"bugs":{"url":"https://github.com/alihxn23/ts-lambda-hot-reload/issues"},"author":{"name":"Muhammad Ali Hasan"},"license":"ISC","homepage":"https://github.com/alihxn23/ts-lambda-hot-reload#readme","keywords":[],"repository":{"url":"git+https://github.com/alihxn23/ts-lambda-hot-reload.git"},"description":"`npx ts-lambda-hot-reload`","maintainers":[{"name":"alihxn","email":"alihasan9923@gmail.com"}],"readme":"# TS-Lambda-Hot-Reload\n\nA powerful CLI tool for selective hot-reloading of AWS Lambda functions during local development. Build and watch only the functions you're actively working on, avoiding the overhead of rebuilding your entire SAM application.\n\n## Features\n\n- 🔥 **Selective Hot-Reload**: Choose which Lambda functions to watch and rebuild\n- ⚡ **Fast Incremental Builds**: Only rebuilds functions with changed source files\n- 🔄 **Parallel Processing**: Builds multiple functions simultaneously for faster feedback\n- 🎯 **Smart File Watching**: Debounced file changes with intelligent ignore patterns\n- 💬 **Interactive Commands**: Manual restart, help, and quit commands during runtime\n- 📊 **Enhanced Logging**: Function-specific log formatting for multi-function builds\n- ⚙️ **Flexible Configuration**: Persistent settings via JSON or YAML config files\n- 🏗️ **Multiple Build Methods**: Supports both esbuild and makefile build processes\n- 📦 **Template Support**: Works with SAM and CDK-generated templates\n\n## Installation\n\n### Global Installation\n\n```bash\nnpm install -g @alihxn/ts-lambda-hot-reload\n```\n\n### Local Installation (Project-specific)\n\n```bash\nnpm install --save-dev @alihxn/ts-lambda-hot-reload\n```\n\n### Run Without Installation\n\n```bash\nnpx @alihxn/ts-lambda-hot-reload\n```\n\n## Prerequisites\n\n- Node.js 14.x or higher\n- AWS SAM CLI (for local Lambda testing)\n- esbuild (if using esbuild build method)\n- make (if using makefile build method)\n\n## Quick Start\n\n1. Navigate to your SAM project directory:\n```bash\ncd my-sam-project\n```\n\n2. Run the hot-reload tool:\n```bash\nnpx @alihxn/ts-lambda-hot-reload\n```\n\n3. Select the Lambda functions you want to watch from the interactive prompt\n\n4. Start coding! The tool will automatically rebuild your functions when files change\n\n## Usage\n\n### Basic Usage\n\n```bash\nts-lambda-hot-reload\n```\n\nThis will:\n1. Parse your `template.yaml` file\n2. Present an interactive list of Lambda functions\n3. Start watching selected functions for file changes\n4. Rebuild automatically when source files are modified\n\n### With Configuration File\n\n```bash\nts-lambda-hot-reload --config lambda-hot-reload.json\n```\n\n### Interactive Commands\n\nWhile the tool is running, you can use these commands:\n\n- `rs` or `restart` - Manually trigger a complete rebuild of all selected functions\n- `help` or `h` - Display available commands\n- `quit` or `q` - Gracefully exit the tool\n\n## Configuration\n\nCreate a `lambda-hot-reload.json` (or `.yaml`) file in your project root:\n\n```json\n{\n  \"templatePath\": \"./template.yaml\",\n  \"defaultFunctions\": [\"HelloWorldFunction\", \"ApiFunction\"],\n  \"ignorePatterns\": [\n    \"**/*.test.ts\",\n    \"**/test/**\",\n    \"**/__mocks__/**\"\n  ],\n  \"buildSettings\": {\n    \"global\": {\n      \"Minify\": true,\n      \"Sourcemap\": true\n    },\n    \"HelloWorldFunction\": {\n      \"Target\": \"es2022\"\n    }\n  },\n  \"logLevel\": \"info\",\n  \"parallelBuilds\": true,\n  \"debounceDelay\": 300\n}\n```\n\n### Configuration Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `templatePath` | string | `\"./template.yaml\"` | Path to your SAM template file |\n| `defaultFunctions` | array | `[]` | Functions to pre-select in the interactive prompt |\n| `ignorePatterns` | array | See below | File patterns to ignore during watching |\n| `buildSettings` | object | `{}` | Custom build parameters (global or per-function) |\n| `logLevel` | string | `\"info\"` | Logging level: `debug`, `info`, `warn`, `error` |\n| `parallelBuilds` | boolean | `true` | Enable parallel function builds |\n| `debounceDelay` | number | `300` | Milliseconds to wait before triggering rebuild |\n\n### Default Ignore Patterns\n\n```javascript\n[\n  \"node_modules/**\",\n  \".git/**\",\n  \".aws-sam/**\",\n  \"**/*.test.js\",\n  \"**/*.test.ts\",\n  \"**/test/**\",\n  \"**/tests/**\",\n  \"**/.DS_Store\",\n  \"**/coverage/**\"\n]\n```\n\n## SAM Template Configuration\n\n### Using esbuild\n\n```yaml\nResources:\n  HelloWorldFunction:\n    Type: AWS::Serverless::Function\n    Properties:\n      CodeUri: hello-world/\n      Handler: app.handler\n      Runtime: nodejs20.x\n    Metadata:\n      BuildMethod: esbuild\n      BuildProperties:\n        Target: es2020\n        Minify: true\n        Sourcemap: true\n```\n\n### Using Makefile\n\n```yaml\nResources:\n  CustomFunction:\n    Type: AWS::Serverless::Function\n    Properties:\n      CodeUri: custom-function/\n      Handler: index.handler\n      Runtime: nodejs20.x\n    Metadata:\n      BuildMethod: makefile\n```\n\n### Global Function Properties\n\n```yaml\nGlobals:\n  Function:\n    Timeout: 30\n    MemorySize: 256\n    Runtime: nodejs20.x\n    Environment:\n      Variables:\n        NODE_ENV: development\n\nResources:\n  Function1:\n    Type: AWS::Serverless::Function\n    Properties:\n      CodeUri: function1/\n      Handler: app.handler\n    Metadata:\n      BuildMethod: esbuild\n```\n\n## Example SAM Template\n\nHere's a complete example template:\n\n```yaml\nAWSTemplateFormatVersion: '2010-09-09'\nTransform: AWS::Serverless-2016-10-31\nDescription: Example SAM Application\n\nGlobals:\n  Function:\n    Timeout: 30\n    Runtime: nodejs20.x\n\nResources:\n  HelloWorldFunction:\n    Type: AWS::Serverless::Function\n    Properties:\n      CodeUri: hello-world/\n      Handler: app.handler\n      Events:\n        HelloWorld:\n          Type: Api\n          Properties:\n            Path: /hello\n            Method: get\n    Metadata:\n      BuildMethod: esbuild\n      BuildProperties:\n        Target: es2020\n        Minify: false\n        Sourcemap: true\n\n  DataProcessorFunction:\n    Type: AWS::Serverless::Function\n    Properties:\n      CodeUri: data-processor/\n      Handler: index.handler\n      MemorySize: 512\n    Metadata:\n      BuildMethod: esbuild\n      BuildProperties:\n        Target: es2022\n        Minify: true\n```\n\n## Build Output\n\nThe tool provides detailed build information:\n\n```\n2024-01-31T10:30:45.123Z Starting build for 2 functions (max parallel: 4)\n2024-01-31T10:30:45.124Z Build Progress: 0/2 (0%) [░░░░░░░░░░░░░░░░░░░░]\n\n==================================================\nBuilding HelloWorldFunction\nStarted at: 2024-01-31T10:30:45.125Z\n==================================================\n\n2024-01-31T10:30:46.234Z Build SUCCESS for HelloWorldFunction (1109ms)\n2024-01-31T10:30:46.235Z Build Progress: 1/2 (50%) [██████████░░░░░░░░░░]\n\n==================================================\nBuilding DataProcessorFunction\nStarted at: 2024-01-31T10:30:46.236Z\n==================================================\n\n2024-01-31T10:30:47.456Z Build SUCCESS for DataProcessorFunction (1220ms)\n2024-01-31T10:30:47.457Z Build Progress: 2/2 (100%) [████████████████████]\n\n============================================================\nBUILD SUMMARY\n============================================================\nTotal Functions: 2\nSuccessful: 2\nFailed: 0\nTotal Duration: 2329ms\nAverage Duration: 1165ms\n============================================================\n\nFunction Build Results:\n  HelloWorldFunction: ✅ SUCCESS (1109ms)\n  DataProcessorFunction: ✅ SUCCESS (1220ms)\n```\n\n## Troubleshooting\n\n### Build Failures\n\n**Problem**: esbuild fails with \"Cannot find module\"\n```\nSolution: Ensure all dependencies are installed:\nnpm install\n```\n\n**Problem**: Permission denied errors\n```\nSolution: Check file permissions:\nchmod -R 755 .aws-sam/build\n```\n\n**Problem**: Template parsing fails\n```\nSolution: Validate your template:\nsam validate\n```\n\n### File Watching Issues\n\n**Problem**: Changes not triggering rebuilds\n```\nSolution: Check ignore patterns in your configuration\n```\n\n**Problem**: Too many rebuilds triggered\n```\nSolution: Increase debounceDelay in configuration:\n{\n  \"debounceDelay\": 500\n}\n```\n\n### Performance Issues\n\n**Problem**: Builds are slow\n```\nSolutions:\n1. Enable parallel builds (default: true)\n2. Use incremental builds (automatic)\n3. Optimize esbuild configuration\n4. Reduce number of watched functions\n```\n\n## Advanced Usage\n\n### Verbose Logging\n\nEnable detailed build information:\n\n```json\n{\n  \"logLevel\": \"debug\"\n}\n```\n\n### Custom Build Settings Per Function\n\n```json\n{\n  \"buildSettings\": {\n    \"global\": {\n      \"Minify\": true\n    },\n    \"PerformanceFunction\": {\n      \"Target\": \"es2022\",\n      \"Minify\": true,\n      \"Sourcemap\": false\n    },\n    \"DebugFunction\": {\n      \"Target\": \"es2020\",\n      \"Minify\": false,\n      \"Sourcemap\": true\n    }\n  }\n}\n```\n\n### CDK Template Support\n\nThe tool automatically detects and parses CDK-generated templates:\n\n```yaml\nResources:\n  MyFunction:\n    Type: AWS::Lambda::Function\n    Properties:\n      Code:\n        S3Bucket: my-bucket\n        S3Key: my-function.zip\n      Handler: index.handler\n      Runtime: nodejs20.x\n    Metadata:\n      BuildMethod: esbuild\n```\n\n## Development\n\n### Running Tests\n\n```bash\nnpm test\n```\n\n### Running Tests in Watch Mode\n\n```bash\nnpm run test:watch\n```\n\n### Project Structure\n\n```\nts-lambda-hot-reload/\n├── src/\n│   ├── cli.js                    # Main CLI interface\n│   ├── configuration-manager.js  # Configuration handling\n│   ├── template-parser.js        # SAM/CDK template parsing\n│   ├── build-manager.js          # Build coordination\n│   ├── file-watcher.js           # File watching with nodemon\n│   ├── command-handler.js        # Interactive command processing\n│   └── logger.js                 # Structured logging\n├── index.js                      # Entry point\n├── template.yaml                 # Example SAM template\n└── lambda-hot-reload.json        # Example configuration\n```\n\n## Contributing\n\nContributions are welcome! Please follow these guidelines:\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/my-feature`\n3. Write tests for your changes\n4. Ensure all tests pass: `npm test`\n5. Commit your changes: `git commit -am 'Add new feature'`\n6. Push to the branch: `git push origin feature/my-feature`\n7. Submit a pull request\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/alihxn23/ts-lambda-hot-reload.git\ncd ts-lambda-hot-reload\n\n# Install dependencies\nnpm install\n\n# Run tests\nnpm test\n\n# Run in development mode\nnode index.js\n```\n\n### Code Style\n\n- Use ES6+ features\n- Follow existing code formatting\n- Add JSDoc comments for public APIs\n- Write unit tests for new functionality\n- Ensure property-based tests pass\n\n## License\n\nISC\n\n## Author\n\nMuhammad Ali Hasan\n\n## Repository\n\nhttps://github.com/alihxn23/ts-lambda-hot-reload\n\n## Issues\n\nReport issues at: https://github.com/alihxn23/ts-lambda-hot-reload/issues\n\n## Changelog\n\n### v1.1.1\n- Enhanced file watching with debouncing\n- Added interactive command support (restart, help, quit)\n- Improved logging with function-specific formatting\n- Added configuration file support (JSON/YAML)\n- Implemented parallel builds\n- Added incremental build logic\n- Enhanced template parsing (SAM + CDK support)\n- Comprehensive error handling and recovery\n\n### v1.0.0\n- Initial release\n- Basic hot-reload functionality\n- esbuild support\n","readmeFilename":"README.md"}