Releases: OpenAF/openaf
Releases · OpenAF/openaf
20211229
Potential breaking change: H2 version doesn't support old versions (use ojob.io/h2/export, ojob.io/h2/import and ojob.io/h2/onlineMigration for H2 db mitigation or ojob.io/oaf/mvs/import & ojob.io/oaf/mvs/export for H2 MVS mitigation)
Generic
- improvements on printTable and printMap
- $from: new cartesian and filter functions
- $rest: keeping request headers in upload (#305)
- isDef now correctly checks if it's a Java object
- improvements on Windows old command prompt UI detection
- new log formats supporting json and OpenAF's slon
- includeOPack will just add to the local opack db if include opack is a local folder (#312)
- improvements on isJavaObject to avoid stack overflows
- new $atomic .set and .setIf (#315)
- improvements on oPromise/$do (#316)
- sigil: new toNumber, toString, toBoolean, toArray, toDate and toMap conversion helpers
- initial support for Java 17
- small startup performance improvements
- oJobRunFile bug correction (#307)
- Java libraries updates (#300, #301, #317
oJob
- new language support for "sh"
- new jobs.typesArgs.url
- new todo.when supporting global states changed with ow.oJob.setState
- new help main entry with support for mandatory args and improved -jobhelp
- new active metrics (ojob.metrics.active) for nAttrMon and Prometheus
- new getMetric and setMetric functions
- new ojob.integrity for integrity check on includes
- new ojob.check for input and output arguments sigil-based checks and conversions (#318)
- job.exec now overrides job.execRequire
- improvements on async/sequential modes, job "res" return and include functionality
ow.format
- withSideLine themes and function
- new sshProgress support
- toDate new timezone argument
- withMD support for headings and tables
ow.ch
- new prometheus type
- Elasticsearch: getSet improvement and exception handling (#304); improved support for ElasticSearch 7.x; new seeAll option; new stamp option (#314)
- revision on several types to ensure key entries sorting when desirable
- waitForJobs improvements based on (#316)
- small bug corrections
ow.obj
- http: support for replacing existing headers like the user agent header
ow.server
- telemetry: new send2nAttrMon and send2Prometheus
ow.sec
- new support for secret files
- new special bucket "system" with environment variables based entries
ow.metrics
- More stats on $rest calls
- New log functions metrics
- New java related metrics
- fromObj2OpenMetrics improvements
- New fromOpenMetrics2Array
- Bug correction for $cache metrics
ow.java
- new getSystemProperties, getClassPath, getInputArguments and getLibraryPath
ow.python
- pid file is now placed on user's home
- try to fallback to python3 if python is not found
SSH
- sftpPut now correctly identifies between a string or a java stream in some situations
CSV
- improvements on stream format functions
20210721
Potential breaking changes on: ow.server.jwt
Generic
- Help is now offline by default
- Improvements to Windows ANSI handling (you might need to run --install to update startup scripts) #266
- new _i$ alternative to _$ that will interactive ask for input if not defined
- new $f and $ft wrappers around Java's Formatter
- new $lock wrapper around Java's Reentrant Locks
- new $flock wrapper around Java's file locking functionality
- new md2, sha384, hmacSHA384 and hmacSHA512 bug fixed
- ansiLength and ansiColor now support 8-bit color
- compare was improved
- plugin now supports different Java plugin classes on the same plugin oPack
- load improvements when errors are found or files are not found
- $rest improvements to avoid rare issues with the preAction option
- oPromise/$do small improvements
- Third-party libraries updates (including #275, #284, #286 )
Console
- Slight look&feel change: errors and help now have a colored side line in ANSI terminals; error info was also improved
- In Windows will output warning if started without UTF-8 encoding set
oJob
- Improved args handling under-the-woods
- Support for oJob map hash check integrity (by file or oPack) and/or JWT signature map validation
- You can now customizer the ojob.daemonFunc when daemon is set to true
- More languages small improvements
- execRequire forcely uses "oaf" language
- new ojob map code section so execRequire can have embedded code in the same file (useful for distribution scenarios)
- Added a ojobio alias
DB
- After establishing a connection it tries to set auto commit always to false
- Rollback will ignore errors (controllable by an argument flag)
- Connection user and password are only set if defined (to support JDBC drivers that don't use user/pass)
- New getAutoCommit and setAutoCommit for better direct control of auto commit connection flag
ow.format
- Wordwrap improvements and new "side line" formatting
- Very basic markdown support for console
- streamSHPrefix now has a template option
- xls.getStyle now ensures correct fill pattern if not specified
- xls.getColor now supports also color number indexes
ow.obj
- New sign, isSigned and signVerify functionality to sign map objects with a JWT
- flatMap now accepts a separator argument
- new reorderArrayMap to reorder keys of each map of an array of maps
ow.ch
- Big improvements on getHousekeepSubscriber to handle heavy concurrency situations
- Improvements on the "all" channel type (e.g. including custom functions for handling available keys and values)
- Improvements on the destroy method of "buffer" channel type
- The "file" channel type now supports using the new $flock
- waitForJobs returns immediately if no jobs are set
ow.server
- jwt was reimplemented. to use the jjwt library See odoc help to understand changes to arguments although functionality is pretty similar.
ow.net
- New getSSLPublicCertificates to retrieve public certificates from a HTTPS connection
- getPublicIP now has an alternative implementation and enables checking on other IP addresses too.
ow.template
- Improvements to OpenAF helper functions and added new ones
ow.ai
- New regression with functionality for calculating linear, power, exponential, logarithmic and polynomial regressions over a set of values
- New valuesArray with functionality for calculating deviation, variance and movingAverage over a set of values
SNMP plugin
- Update to libraries
- Fix engineId #267
20210515
Generic
- Small improvements on merge
- Main openaf_profile is now compiled if possible to improve startup
- Improvements on JSON and YAML generation that can be controlled with __JSONformat and __YAMLformat
- Updated libs jackson-core, postgresql, js-yaml
- Update to handlebars (security issue GHSA-f2jv-r9rf-7988)
AF
- The function af.fromXML2Obj now can have an optional prefix for XML attributes
oJob
- OJOB_AUTHORIZEDDOMAINS is now a global array so it can be set on profile also
- Small improvements on lang support
- Small improvements on using ansi output
- Supports safe or unsafe tags in YAML
oPack
- Preliminary support for per-user extra opack db allowing to install opacks on user space
ow.format
- New functions: getUserHome, getOSArch and getOSVersion
- Included shortcuts for: toBase64, fromBase64, md5, sha1, sha256, sha512, toBoolean, now, nowUTC, nowNano, hmacSHA256 and hmacSHA512
ow.ch
- New parameter to channel elasticsearch to include id calculation function
ow.obj
- New flatMap function
ow.java
- New cipher functions: saveKey2String, saveKey2Stream, readKey4String and readKey4Stream
ow.net
- New oWrap to include network related functions from ow.format and ow.java
ow.metrics
- Added metrics for architecture, openaf distribution and OS version
- Collecting OpenAF channel now also includes date object as key
- Improvements on stopCollecting
20210412
This is maintenance release from 20210412.
The main updates are:
- Solved security dependency update (GHSA-26vr-8j45-3r4w)
- Corresponding update on external libraries and small code changes to adapt where needed
20210404
General
- Total replacemente of the old jlinq with nlinq
- Small bug corrections and performance improvements
- Fixing help search
- JSON output on log functions
- New "merge" implementation
- Support for inline $ssh.key and $ssh.prefix
- Default DNS TTL resolution set to 60s.
- Undefined or void 0 can now also be alias with "__"
- New functions: uniqArray, $get, $set, $sec.list, $job, toBoolean, askDef, syncFn, objOrStr
oJob
- Shell improvements (e.g. langFn, withFile)
- Per job definition "file" entry
- Built-in support for langs "ssh", "winssh", "go", "ruby" and "perl"
- Shell prefix support for langs "ssh"/"winssh"
- Output support for jsmap, slon and prettyjson
- Control log channel history size (automatic housekeeping)
- oJob.execRequire setting for automatic external code (require) assignment
- Improvements to oJobRunJob
- On error args are no longer logged, by default (can be turned on with ojob.logArgs)
ow.format
- Adapting for plugin-XLS
- Correction on applying XLS auto-filter
- New functions: toSLON, fromBytesAbbreviation and getTLSCertificates
ow.obj
- flatten: improvements and avoiding duplicates
- fromObj2Array: improvements
- http upload support
ow.ch
- "File" type compact option
- Lock improvements
ow.server
- rest.reply: option to return HTML
- JWT decode support
- OAuth support
ow.template
- Generate markdown table
ow.metrics
- Ensure that OpenMetrics output keys don't have spaces
SNMP
- Update SNMP4J lib
- SNMP Server improvements
- Login corrections
20201111
Generic
- Min JVM version moved from 1.7 to 8
- Update libs to latest JVM 8 versions
- Update Mozilla Rhino engine to 1.7.13
- YAML: support for multidoc
- XLS/DOC plugin were moved to their own separate opack
- sh/$sh support for environment variables
- new ask, ask1, askEncrypt and askN functions for user input (using the internal Console plugin)
- printMap/printTable now default to ansi if available
- new loadPy function supporting python files and python string code
- improvements to $openaf
- if the openaf.jar.orig is not available and a repack operation requires it, it will try to download it directly, if possible
Console:
- Support for multi line entries
oJob:
- Support for job typeArgs.lock for ensure locking for each job execute instance and across jobs
- Support for shell and custom shell job execution
- Improvements to subOJobs
- New jobsInclude main entry to load jobs without the todos from any ojob definition
- Support to load ojob definitions from complete URLs (as long as the domain is in the authorised list)
oPack:
- Small restyle for list and info command-line verbs
ow.sec:
- New OpenWrap to handle secure secret buckets to be used in keeping passwords, usernames, etc... including creating the corresponding objects (e.g. DB, SSH, ow.obj.pool.SSH, ...) directly.
ow.ch:
- Improvements on elasticsearch
ow.java:
- cipher: adding symetric keys support
ow.python:
- adding python function "_d" as a shortcut for dumping a dictionary
- support for python in Windows
- environment variable OAF_PYTHON forces the python interpreter to use
20200819
Generic
- New $bottleneck function to build function bottleneck on propose to control function access
- Improvements on $cache default values
- Improved support for Java 11
- Another new function to facilitate running oJobs: oJob.
- The processExpr now supports different string sources other than __expr
- oDoc performance improvements
- Small improvements on library loading and $doA2B (including an errorFunction option)
- New "openInBrowser", "arrayContains" function
- Generate an update script to facilitate updating openaf
- New $py, $pyStart and $pyStop helper functions
- af.sh/sh/$sh dontWait new option
- Potential resource leakage corrections and other small improvements
oJob
- Support for ojob.io
- New options to support ow.metrics
- ow.oJob.output support for CSV
- Improvements on arguments command-line parsing and job deps
- Corrections on job type "jobs"
- 'each' option includes arguments on 'catch' method
- Support for python exec jobs (typeArgs.lang)
- New job typeArgs options: execJs, execRequire and execPy
Console
- Improved auto-complete
- Input trim for spaces
- New "ojob" default alias
- Small "desc" command improvements
ow.metrics
- New module for automated metrics gathering
- Options to select specific metrics for active queries.
- "fromObj2OpenMetrics" to convert a map to open metrics strings
ow.obj
- New functions to facilitate data generation: oneOf, oneOfFn, randomRange and randomDateRange
ow.format
- New functions to render strings in grids (string.renderLines & string.grid)
- New function testHost
ow.server
- New ow.server.telemetry functions to help integrate passive or active ow.metrics
- New ow.server.socket functionality
- New httpd.replyFn to wrap a POST request for an instance function
ow.ch
- Improvements to avoid thread locking in type big
- Improvements on type all
- MVS channel pagination support
ow.java
- Support for memory mapped files (ow.java.memComm and ow.java.jsonMemComm)
ow.python
- New module for python support using python 2 or 3 without any libraries other than standard
- Support for python server process
IO
- New io.onDirEvent callback function
HTTPServer
- Improved error handling
ZIP
- Stream functions lazy close
Future features in testing
- Auto-update lock
20200524
Generic
- new oaf/oafc scripts
- adding $rest.head
- af.jsonParse using the correct GSON lib method
- update to httpclient and jna libs
- shebang improvements
- new yprint method
Console
- option for automatic update
- exit actions
IO
- Specific io.readFileJSON and io.writeFileJSON
oJob
- added getJob function
- enable download via http/s with authorized domains
- improvements to include section
- adding ojob.cronInLocalTime
- job.each option
- correcting previous accidental breaking change on global
- default ojobhelp set to "help" job
- new oJob.output function
ow.obj
- ow.obj.schemaGenerator: adding description and extra detections
- new useTransaction option on AF pool
ow.ch
- improved getAll and other references
- new type "all"
ow.format
- added isIPv4, isIPv6, isEmail, isURL and isHost
ow.server
- solved documentRoot bug in ow.server.httpd.reply
- forcing cron expr UTC and option for localTime
- support for websockets server
ow.template
- new html.inlineImageTag, html.inlineSrc, html.genStaticVersion*, inlineSrcURL
- adding options to showdownjs lib
HTTPServer
- Websocket server options
XLS
- adding xls.getSheetNames()
20200329
General
- Support for precompiled opack libs for faster startup times
- Adding loadCompiled, af.runFromExternalClass, $throwIfUnDef, object.values, oJobRunFileAsync
- Added $sh.prefix option
- Added encoding option for ioStreamReadLines and sh
- Update to libs: js-yaml, gson, ajv, handlebars
- Improvement on ow.format loading speed
- Improved support for Java >= 12
- Automatic update tries to download an already repacked binary to avoid repacking
- Better support for moving the openaf folder with opacks ("--install" will repair the opack db)
- Documentation updates
Console
- Repaired the "phantom" cyan color that appeared in some outputs
oJob
- Slight performance improvements and bug corrections
- add2Todo function
- Individual job catch function
- Job deps can be a single string now
ow.format
- Added ow.format.escapeHTML4, ow.format.unescapeHTML4, ow.format.int2IP and ow.format.IP2Int
ow.obj
- Added ow.obj.schemaGenerator, ow.obj.fromObj2DBTableCreate
ow.ch
- ElasticSearch improvements & corrections
- Old db implementation renamed to dbold
- New db implementation
ow.server
- Each route function now also provides the httpd server object as a parameter
ow.java
- New IMAP functionality
- Support for different cipher algorithms in ow.java.cipher
ow.template
- Added quick html snippets to add to markdown (ow.template.html)
XLS
- Corrected bug #162
DOC
- Added default headings, addNumbering and writeTable
20200202
General:
- $cache: reuse of previously created objects enabling multiple calls
- ioStreamReadLines bug #161
- getFromZip: option not to use memory
- nwu is now included and changed to use the openaf's class loader
- performance improvements over ansi printing on all platforms
- added $atomic, $retry, $await and $doA2B
- SVN plugin removal (replaced by plugin-SVN opack)
- small performance improvements on openaf's class loader
oJob:
- console logs small redesign and pid is now included on start, end and error job logs
Console:
- correction of pause calculations for certain screen size cases
ow.format:
- adding xls.setTable
- adding getDoH, getReverseDoH
ow.obj
- adding socket functionality
- http: support for OPTIONS verb and optional cookies store access and context access (redirects tracking)
- httpd: generic reply method with content auto-detection
ow.java
- adding dns utilities (dns over https, reverse dns, etc...)
- adding sign, verify and genCert (SSL self-signed)
- adding maven getLicenseByVersion
ow.server
- adding JWT (Json Web Tokens) basic support
XLS:
- improvements on determining cell types