Releases: alt-javascript/camel-lite
Releases · alt-javascript/camel-lite
v1.1.1
v1.1.0
[1.1.0] - 2026-03-28
Added
CLI (camel-lite-cli)
--verbose— restores info-level framework logging on stderr (default: suppressed)--debug— restores debug-level framework logging on stderr; takes precedence over--verbose-p,--producer-uri <uri>— override the ProducerTemplate target URI; requires-i--exchange-pattern <InOnly|i|InOut|io>— select fire-and-forget (InOnly,i) or request-reply (InOut,io); case-insensitive; defaults toInOnly; reply body printed to stdout forInOut-c,--consumer-uri <uri>— poll a consumer URI in a daemon loop, printing each message body to stdout; implies daemon mode; mutually exclusive with-iand-p- User config discovery:
ProfileConfigLoader.load({ basePath: ~/.camel-lite })loadsapplication.yaml/application.jsonfrom the user's home config directory on every invocation - Silent-by-default: all framework logging suppressed via
EphemeralConfigoverlay (logging.level./: off); zero stderr output unless--verboseor--debugis set - Boot banner suppressed unconditionally
Core (camel-lite-core)
PollingConsumerAdapter— wraps any push-consumer in an internalBufferQueue, making it pollable viaConsumerTemplate; enablesConsumerTemplateto receive from any URI scheme, not onlyseda:CamelContext.pollingUris—Set<string>property; URIs in this set are wrapped withPollingConsumerAdapterwhen the context startsConsumerTemplate— removed scheme whitelist; any consumer with a nativepoll()method or registered viapollingUrisis now supported
Changed
CLI (camel-lite-cli)
- Runtime now uses
CdiCamelRuntime(CDI boot stack viacamelLiteExtrasStarter) as the sole execution path; all 12 component schemes are available without manual registration components.jsdeleted; component registration is handled entirely byboot-camel-lite-extras-starter- Config composition:
PropertySourceChain([loggingOverlay, userConfig])— logging overlay wins, user config applies underneath CamelRuntimere-exported fromsrc/index.jsas a backward-compatible alias forCdiCamelRuntime
v1.0.2
[1.0.2] - 2026-03-27
Changed
- Scoped all package names to
@alt-javascript/(e.g.camel-lite-core→@alt-javascript/camel-lite-core) - Updated all cross-package imports and
devDependenciesto use scoped names
v1.0.1
[1.0.1] - 2026-03-27
Fixed
- Added
repositoryfield to all publishable workspace packages — required for npm provenance validation - Pinned workspace cross-dependencies to explicit version (
1.0.0) instead of*to prevent npm resolving them as git SSH URLs outside the monorepo - Added
author,contributors,keywords, andpublishConfigto all workspace packages - CI publish workflow: removed non-existent
npm run buildstep, added--access public --provenanceflags andid-token: writepermission
v1.0.0
[1.0.0] - 2026-03-27
Added
Core (camel-lite-core)
CamelContext— component registry, route lifecycle, consumer map, bean registryRouteBuilder— fluent DSL for building routes programmaticallyRouteDefinition— per-route DSL:process,to,filter,transform,setBody,setHeader,setProperty,removeHeader,choice/when/otherwise,split,aggregate,marshal,unmarshal,convertBodyTo,bean,log,stop,deadLetterChannelPipeline— sequential processor chain with configurable error handling (redelivery, dead letter channel,onException)Exchange/Message— in/out message pair with headers, properties, and exception captureProducerTemplate— high-levelsendBody(uri, body)andrequestBody(uri, body)APIsConsumerTemplate— high-levelreceiveBody(uri, timeoutMs)polling API (seda: supported)RouteLoader— YAML and JSON route definition loader:loadFile,loadString,loadStream,loadObject- Simple expression language:
${body},${header.X},${exchangeProperty.X},${out.body}, logical operators, contains, regex js(code)andconstant(value)expression factoriesAggregationStrategies— built-in strategies:useLatest,collect,sum,groupedExchangeCycleDetectedError,CamelError,SedaQueueFullError,CamelFilterStopException— typed errors
Components
camel-lite-component-direct— synchronous in-process routing with cycle detectioncamel-lite-component-seda— async in-process queuing with configurable concurrency and queue sizecamel-lite-component-log— structured logging via@alt-javascript/logger; per-route logger name and levelcamel-lite-component-file— file read (consumer: poll directory) and write (producer: write exchange body)camel-lite-component-http— HTTP producer: GET/POST/PUT/DELETE with JSON body serialisationcamel-lite-component-ftp— FTP producer and consumer viabasic-ftpcamel-lite-component-timer— periodic exchange trigger withperiod,delay,repeatCount; headers:CamelTimerName,CamelTimerFiredTime,CamelTimerCountercamel-lite-component-cron— cron-scheduled trigger vianode-cron; 5- and 6-field expressions; timezone support; headers:CamelCronName,CamelCronFiredTimecamel-lite-component-amqp— AMQP 1.0 (rhea) and AMQP 0-9-1 (amqplib) messaging; producer and consumercamel-lite-component-sql— SQL query and update via Node.js built-innode:sqlite; named and positional parameterscamel-lite-component-nosql— NoSQL collection operations via@alt-javascript/jsnosqlc; insert, find, update, deletecamel-lite-component-master— leader election with pluggableLockStrategyinterface; three backends:FileLockStrategy— exclusive file creation (default, zero external deps)ZooKeeperStrategy— ZooKeeper ephemeral node vianode-zookeeper-clientConsulStrategy— Consul session + KV acquire via nativefetch- Headers:
CamelMasterIsLeader,CamelMasterService,CamelMasterNodeId
CLI (camel-lite-cli)
camel-lite -r <file|-> [-i <body|->] [-d] [-l text|json]-r— route definition file (.yaml,.yml,.json) or-for stdin-i— message body to inject, or-for stdin (mutually exclusive with-r -)-d— daemon mode: keep context alive untilSIGINT/SIGTERM-l— log output format:text(default, human-readable) orjson- All 13 components pre-registered; missing broker dependencies skip gracefully
Boot Starters
boot-camel-lite-starter—@alt-javascript/bootCDI auto-configuration for core + direct/seda/log/file/http/ftp/timer/cron:CamelLiteContextCDI bean — wrapsCamelContextwith asyncinit()/ready()/destroy()RouteRegistryCDI bean — auto-discovers CDIRouteBuilderbeans (duck-typedconfigure(ctx)); loadsboot.camel-lite.routes[n].definitionobjects viaRouteLoader.loadObject()- Per-scheme
ConfiguredComponentCDI beans, each gated byboot.camel-lite.<scheme>.enabled(default:true) camelProducerTemplateandcamelConsumerTemplateCDI beanscamelLiteStarter(options)entry function
boot-camel-lite-extras-starter— extends core starter with amqp/sql/nosql/master componentscamelLiteExtrasStarter(options)entry function
Observability
- All log categories follow the
@alt-javascript/camel-lite/<ClassName>idiom - INFO level: context start/stop, route registration, leader election, component registration
- DEBUG level: per-message dispatch, timer fires, cron ticks, lock renewal
- WARN level: lock acquire failure, missing component, stop cleanup error
- Exchange error captured in
exchange.exception— pipeline continues to dead letter channel if configured