{"_id":"@alt-javascript/camel-lite-core","_rev":"3-b210cca0952f5dc3ec7f8e545d110cc9","name":"@alt-javascript/camel-lite-core","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.2":{"name":"@alt-javascript/camel-lite-core","version":"1.0.2","keywords":["alt-javascript","camel","camel-lite","eai","eip","integration","core","routing","pipeline","exchange","processor"],"author":{"name":"Craig Parravicini"},"_id":"@alt-javascript/camel-lite-core@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":"30171655ab36201da8456e30630387899586e9e3","tarball":"https://registry.npmjs.org/@alt-javascript/camel-lite-core/-/camel-lite-core-1.0.2.tgz","fileCount":31,"integrity":"sha512-6nVQz0IFmhbDITACmf7p/v/QurbGU5EahSMAEBd4FYcaEaW02p5GE9YbegMq8lrtBd32ZMvKuAPYgoKPyQ7HHA==","signatures":[{"sig":"MEUCIAdYQnuTRZ5r1X3O74toRUR/Pw/9EwhaWAHtVvebgr8KAiEAsgFo1lrd2kuDBfic9VuDByozjHzPllrWCHSYqTHW58U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alt-javascript%2fcamel-lite-core@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":141572},"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-blue.svg)](../../LICENSE)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"js-yaml":"^4.1.0","@alt-javascript/common":"^3.0.7","@alt-javascript/config":"^3.0.7","@alt-javascript/logger":"^3.0.7"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"@alt-javascript/camel-lite-component-seda":"1.0.2","@alt-javascript/camel-lite-component-direct":"1.0.2"},"_npmOperationalInternal":{"tmp":"tmp/camel-lite-core_1.0.2_1774595632875_0.9788229180712933","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@alt-javascript/camel-lite-core","version":"1.1.0","keywords":["alt-javascript","camel","camel-lite","eai","eip","integration","core","routing","pipeline","exchange","processor"],"author":{"name":"Craig Parravicini"},"_id":"@alt-javascript/camel-lite-core@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":"fe5b0770591f6a5efa592139bd47611f4a47e85d","tarball":"https://registry.npmjs.org/@alt-javascript/camel-lite-core/-/camel-lite-core-1.1.0.tgz","fileCount":32,"integrity":"sha512-vM1zrgePsPQJVeagHTQghbfo7RoAH24CEtZTO8trA+xTtTAqWOD2mol7tNSwesKOyQXztxh2CCfm1sv3NHcPnA==","signatures":[{"sig":"MEUCIQCpH2LpiF6yjBGGKtWzuPxjaeyP78ka0+y2yh9n1HNBYwIgUIPEymX3eEo6IrMMjq/GzGztSN9t4kayC8gFZN+lktc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alt-javascript%2fcamel-lite-core@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":149711},"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-blue.svg)](../../LICENSE)","directories":{},"_nodeVersion":"24.14.0","dependencies":{"js-yaml":"^4.1.0","@alt-javascript/common":"^3.0.7","@alt-javascript/config":"^3.0.7","@alt-javascript/logger":"^3.0.7"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"@alt-javascript/camel-lite-component-seda":"1.1.0","@alt-javascript/camel-lite-component-direct":"1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/camel-lite-core_1.1.0_1774763531663_0.777578948954631","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@alt-javascript/camel-lite-core","version":"1.1.1","type":"module","exports":{".":"./src/index.js"},"scripts":{"test":"node --test"},"devDependencies":{"@alt-javascript/camel-lite-component-direct":"1.1.1","@alt-javascript/camel-lite-component-seda":"1.1.1"},"dependencies":{"@alt-javascript/common":"^3.0.7","@alt-javascript/config":"^3.0.7","@alt-javascript/logger":"^3.0.7","js-yaml":"^4.1.0"},"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","core","routing","pipeline","exchange","processor"],"publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"gitHead":"ff8501eed381d38ac20f56aea721274466d64212","_id":"@alt-javascript/camel-lite-core@1.1.1","description":"[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](../../LICENSE)","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-oQXepW5EW4iENxu5B0MChtyUkpkdcT6BRjNB/qXnt1KfnNEjQBZRCXSupTSjtVKVIFEHkrPKDo/Zggq2ZfVN3w==","shasum":"eba9f1ce08bba18fb3b3aba3085963939507bec3","tarball":"https://registry.npmjs.org/@alt-javascript/camel-lite-core/-/camel-lite-core-1.1.1.tgz","fileCount":32,"unpackedSize":149711,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alt-javascript%2fcamel-lite-core@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD5tBXP1h6i5/G4eut0YFtRL9shq9+D0IvZkcHSjPwsNwIhAP9VUdfkXTrHSxOFBtk2mtb8/QmkcHD8fKXqbeImhHR2"}]},"_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-core_1.1.1_1774764484242_0.8620556323415149"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-27T07:13:52.725Z","modified":"2026-03-29T06:08:04.648Z","1.0.2":"2026-03-27T07:13:53.019Z","1.1.0":"2026-03-29T05:52:11.806Z","1.1.1":"2026-03-29T06:08:04.389Z"},"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","core","routing","pipeline","exchange","processor"],"repository":{"type":"git","url":"git+https://github.com/alt-javascript/camel-lite.git"},"description":"[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](../../LICENSE)","contributors":[{"name":"Claude","url":"Anthropic"}],"maintainers":[{"name":"craigparra","email":"craigparra@gmail.com"}],"readme":"# camel-lite-core\n\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](../../LICENSE)\n\nCore framework for camel-lite — the `CamelContext`, routing DSL, `Exchange`, `Pipeline`, `ProducerTemplate`, `ConsumerTemplate`, and `RouteLoader`.\n\n## Install\n\n```bash\nnpm install camel-lite-core\n```\n\n## Quick Start\n\n```javascript\nimport { CamelContext, RouteBuilder, ProducerTemplate } from 'camel-lite-core';\nimport { DirectComponent } from 'camel-lite-component-direct';\n\nconst context = new CamelContext();\ncontext.addComponent('direct', new DirectComponent());\n\nconst builder = new RouteBuilder();\nbuilder.from('direct:hello')\n  .process(ex => { ex.in.body = `Hello, ${ex.in.body}!`; });\n\ncontext.addRoutes(builder);\nawait context.start();\n\nconst pt = new ProducerTemplate(context);\nconst exchange = await pt.sendBody('direct:hello', 'world');\nconsole.log(exchange.in.body); // Hello, world!\n\nawait context.stop();\n```\n\n## RouteDefinition DSL\n\n| Method | Description |\n|---|---|\n| `process(fn\\|obj)` | Run a processor — `async fn(exchange)` or `{ process(exchange) }` |\n| `to(uri)` | Send to another endpoint |\n| `filter(expr)` | Stop processing if predicate returns false |\n| `transform(expr)` | Replace body with expression result |\n| `setBody(expr)` | Set `exchange.in.body` |\n| `setHeader(name, expr)` | Set a header |\n| `setProperty(name, expr)` | Set an exchange property |\n| `removeHeader(name)` | Remove a header |\n| `choice()` | Content-based router — `.when(expr).to(uri)…​.otherwise().to(uri).end()` |\n| `split(expr)` | Split body into sub-exchanges |\n| `aggregate(expr, strategy)` | Aggregate sub-exchanges |\n| `marshal(format)` | Serialise body (default: `json`) |\n| `unmarshal(format)` | Deserialise body |\n| `convertBodyTo(type)` | Convert body type |\n| `bean(name)` | Invoke named bean from context |\n| `log(expr)` | Log expression result |\n| `stop()` | Stop processing |\n| `deadLetterChannel(uri)` | Route failed exchanges to this URI |\n| `onException(ErrorClass)` | Handle a specific exception type |\n\n## Expressions\n\n```javascript\nimport { simple, js, constant } from 'camel-lite-core';\n\nsimple('${body}')                    // exchange body\nsimple('${header.X-Auth}')           // header value\nsimple('${exchangeProperty.key}')    // exchange property\njs('exchange.in.body.toUpperCase()') // arbitrary JS via new Function()\nconstant('fixed value')              // literal constant\n```\n\n**Note:** `simple()` does not support mixed literal + token strings (e.g. `'Prefix: ${body}'`). Use `js()` or a `process()` step for string building. See [ADR-006](../../docs/adr/ADR-006.md).\n\n## RouteLoader\n\n```javascript\nimport { RouteLoader } from 'camel-lite-core';\n\n// From file — extension auto-detects format (.yaml/.yml/.json); unknown → content-sniff\nconst builder = await RouteLoader.loadFile('routes.yaml');\n\n// From readable stream — content-sniffed (use for stdin or HTTP responses)\nconst builder = await RouteLoader.loadStream(process.stdin);\n\n// From string\nconst builder = RouteLoader.loadString(yamlOrJsonString);\n\n// From already-parsed object (e.g. from @alt-javascript/config at boot time)\nconst builder = RouteLoader.loadObject({ route: { from: { uri: 'direct:x', steps: [] } } });\n```\n\n### YAML route format\n\n```yaml\nroute:\n  id: my-route\n  from:\n    uri: direct:hello\n    steps:\n      - setBody:\n          simple: \"${body}\"\n      - to: log:hello\n      - choice:\n          when:\n            - simple: \"${body} == 'ping'\"\n              to: direct:pong\n          otherwise:\n            to: direct:default\n```\n\n## ProducerTemplate\n\n```javascript\nconst pt = new ProducerTemplate(context);\n\n// InOnly — returns the exchange after completion\nconst exchange = await pt.sendBody('direct:hello', 'world', { 'X-Header': 'value' });\n\n// InOut — returns the result body (exchange.out.body, fallback to exchange.in.body)\nconst result = await pt.requestBody('direct:hello', 'world');\n```\n\n## ConsumerTemplate\n\nPolls from `seda:` endpoints. Direct: and other push-model endpoints are not supported.\n\n```javascript\nconst ct = new ConsumerTemplate(context);\n\nconst exchange = await ct.receive('seda:work', 5000);   // Exchange or null on timeout\nconst body     = await ct.receiveBody('seda:work', 5000); // body or null on timeout\n```\n\n## Error Handling\n\n```javascript\nbuilder.from('direct:input')\n  .onException(Error)\n    .to('direct:errors')\n    .end()\n  .process(ex => { throw new Error('oops'); });\n```\n\nConfigure redelivery via Pipeline options:\n\n```javascript\nimport { Pipeline } from 'camel-lite-core';\n\nnew Pipeline(processors, {\n  maximumRedeliveries: 3,\n  redeliveryDelay: 1000,\n  deadLetterUri: 'direct:dlq',\n});\n```\n\n## See Also\n\n- [Root README](../../README.md)\n- [ADR-007: Component factory chain](../../docs/adr/ADR-007.md)\n- [ADR-006: Expression language](../../docs/adr/ADR-006.md)\n- [ADR-011: Route loading entry points](../../docs/adr/ADR-011.md)\n","readmeFilename":"README.md"}