{"_id":"@alt-javascript/camel-lite-component-ftp","_rev":"3-b12d98f21020424202596eddc5cae235","name":"@alt-javascript/camel-lite-component-ftp","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.2":{"name":"@alt-javascript/camel-lite-component-ftp","version":"1.0.2","keywords":["alt-javascript","camel","camel-lite","eai","eip","integration","ftp","sftp","file-transfer","component"],"author":{"name":"Craig Parravicini"},"_id":"@alt-javascript/camel-lite-component-ftp@1.0.2","maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"contributors":[{"url":"Anthropic","name":"Claude"},{"name":"Apache Camel — design inspiration and pattern source"}],"homepage":"https://github.com/alt-javascript/camel-lite#readme","bugs":{"url":"https://github.com/alt-javascript/camel-lite/issues"},"dist":{"shasum":"84a17833a1e47bb264b02f3fbfa660de0434d58e","tarball":"https://registry.npmjs.org/@alt-javascript/camel-lite-component-ftp/-/camel-lite-component-ftp-1.0.2.tgz","fileCount":9,"integrity":"sha512-o/KAVTIo/VdO1ML79jYdpwBmQIxlIy8RSKzAPAUOHv4+IVAnELi/DCZsFnH3NLQpP5vNpcQPBB2iJFFxPZJ/og==","signatures":[{"sig":"MEQCIFXU3wY87PAzx+TDV+Z31glqclX5r+8z6O2Zb10SWg4cAiAl8Rj+rDVl87lN78vahuyu66r3RYwpQ7x1eiqwmISeMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alt-javascript%2fcamel-lite-component-ftp@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17604},"type":"module","exports":{".":"./src/index.js"},"gitHead":"9f948b9f02d85c9f593229684c475cd209369f2c","scripts":{"test":"node --test"},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"repository":{"url":"git+https://github.com/alt-javascript/camel-lite.git","type":"git"},"_npmVersion":"11.9.0","description":"[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"basic-ftp":"^5.0.0","@alt-javascript/common":"^3.0.7","@alt-javascript/config":"^3.0.7","@alt-javascript/logger":"^3.0.7","@alt-javascript/camel-lite-core":"1.0.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/camel-lite-component-ftp_1.0.2_1774595603670_0.6695312141864802","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@alt-javascript/camel-lite-component-ftp","version":"1.1.0","keywords":["alt-javascript","camel","camel-lite","eai","eip","integration","ftp","sftp","file-transfer","component"],"author":{"name":"Craig Parravicini"},"_id":"@alt-javascript/camel-lite-component-ftp@1.1.0","maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"contributors":[{"url":"Anthropic","name":"Claude"}],"homepage":"https://github.com/alt-javascript/camel-lite#readme","bugs":{"url":"https://github.com/alt-javascript/camel-lite/issues"},"dist":{"shasum":"287836db8554bc44e9658553242f7d6d488971b7","tarball":"https://registry.npmjs.org/@alt-javascript/camel-lite-component-ftp/-/camel-lite-component-ftp-1.1.0.tgz","fileCount":9,"integrity":"sha512-+0OChgBbRQfrD12HHSkof5gGKdxaOyJUeEwvASP9dvYwUA5pwMJ0FGZpA5PMzrU8dyDX8CKGtYFyN5sNxMjK6A==","signatures":[{"sig":"MEUCIApYx8oxbq9bHUpKVLKIBYNCH0IIeawFX408AYzmV6ZUAiEA883BA3RoOOgksK6XtOoadQRvl7CMTWLNVkRPbypHqX4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alt-javascript%2fcamel-lite-component-ftp@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17542},"type":"module","exports":{".":"./src/index.js"},"gitHead":"c227a03632d4b1e2f93b4562c7e74f52ba87d340","scripts":{"test":"node --test"},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"repository":{"url":"git+https://github.com/alt-javascript/camel-lite.git","type":"git"},"_npmVersion":"11.9.0","description":"[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"basic-ftp":"^5.0.0","@alt-javascript/common":"^3.0.7","@alt-javascript/config":"^3.0.7","@alt-javascript/logger":"^3.0.7","@alt-javascript/camel-lite-core":"1.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/camel-lite-component-ftp_1.1.0_1774763508278_0.8715220026242954","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@alt-javascript/camel-lite-component-ftp","version":"1.1.1","type":"module","exports":{".":"./src/index.js"},"dependencies":{"basic-ftp":"^5.0.0","@alt-javascript/logger":"^3.0.7","@alt-javascript/config":"^3.0.7","@alt-javascript/common":"^3.0.7","@alt-javascript/camel-lite-core":"1.1.1"},"scripts":{"test":"node --test"},"repository":{"type":"git","url":"git+https://github.com/alt-javascript/camel-lite.git"},"author":{"name":"Craig Parravicini"},"contributors":[{"name":"Claude","url":"Anthropic"}],"keywords":["alt-javascript","camel","camel-lite","eai","eip","integration","ftp","sftp","file-transfer","component"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"gitHead":"ff8501eed381d38ac20f56aea721274466d64212","_id":"@alt-javascript/camel-lite-component-ftp@1.1.1","description":"[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)","bugs":{"url":"https://github.com/alt-javascript/camel-lite/issues"},"homepage":"https://github.com/alt-javascript/camel-lite#readme","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-5T5MZeFKoqNMJp0oM8GTBXWgT8puov9abXxRVTY8LFwsbACicstNAZ71Y14GQmQ8nRKNsQkbmFP+N77sEA9N6Q==","shasum":"1f15d4137e172258e2eda95d2f77281407dd0b63","tarball":"https://registry.npmjs.org/@alt-javascript/camel-lite-component-ftp/-/camel-lite-component-ftp-1.1.1.tgz","fileCount":9,"unpackedSize":17542,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alt-javascript%2fcamel-lite-component-ftp@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGj0jgNodBk5m9z74KDuF7qrLafwZ+o9KHlX1/fNP5gxAiADXudqEEyDl7LLu3oqS+TY39CZeiV4ZUhu8FkizNPU4g=="}]},"_npmUser":{"name":"craigparra","email":"craigparra@gmail.com"},"directories":{},"maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/camel-lite-component-ftp_1.1.1_1774764462049_0.8097825720608549"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-27T07:13:23.610Z","modified":"2026-03-29T06:07:42.471Z","1.0.2":"2026-03-27T07:13:23.863Z","1.1.0":"2026-03-29T05:51:48.420Z","1.1.1":"2026-03-29T06:07:42.172Z"},"bugs":{"url":"https://github.com/alt-javascript/camel-lite/issues"},"author":{"name":"Craig Parravicini"},"homepage":"https://github.com/alt-javascript/camel-lite#readme","keywords":["alt-javascript","camel","camel-lite","eai","eip","integration","ftp","sftp","file-transfer","component"],"repository":{"type":"git","url":"git+https://github.com/alt-javascript/camel-lite.git"},"description":"[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)","contributors":[{"name":"Claude","url":"Anthropic"}],"maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"readme":"[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## What\n\nFTP producer and consumer via [`basic-ftp`](https://www.npmjs.com/package/basic-ftp). Producers upload the exchange body to the configured directory; consumers poll a directory and emit one exchange per file found.\n\n## Install\n\n```sh\nnpm install camel-lite-component-ftp\n```\n\n## URI Syntax\n\n```\nftp://host/directory[?username=u&password=p&port=21&passive=true]\n```\n\n| Parameter  | Default | Description |\n|------------|---------|-------------|\n| `username` | *(required)* | FTP account username. |\n| `password` | *(required)* | FTP account password. |\n| `port`     | `21`    | FTP server port. |\n| `passive`  | `true`  | Use passive mode transfers. Set to `false` for active mode. |\n\n## Usage\n\n**Producer — upload exchange body to FTP directory:**\n\n```js\nimport { CamelContext } from 'camel-lite-core';\nimport { FtpComponent } from 'camel-lite-component-ftp';\n\nconst context = new CamelContext();\ncontext.addComponent('ftp', new FtpComponent());\n\ncontext.addRoutes({\n  configure(ctx) {\n    ctx.from('direct:upload')\n      .to('ftp://ftp.example.com/uploads?username=user&password=secret');\n  }\n});\n\nawait context.start();\n\nconst template = context.createProducerTemplate();\nawait template.send('direct:upload', ex => {\n  ex.in.body = 'file content here';\n  ex.in.setHeader('CamelFileName', 'report.txt');\n});\n\nawait context.stop();\n```\n\n**Consumer — poll an FTP directory:**\n\n```js\ncontext.addRoutes({\n  configure(ctx) {\n    ctx.from('ftp://ftp.example.com/inbox?username=user&password=secret')\n      .process(exchange => {\n        console.log('Downloaded:', exchange.in.getHeader('CamelFileName'));\n        console.log('Content:', exchange.in.body);\n      });\n  }\n});\n```\n\n## See Also\n\n[camel-lite — root README](../../README.md)\n","readmeFilename":"README.md"}