Skip to content

Releases: elbwalker/walkerOS

walkerOS v1.1.2

02 Feb 17:47
9981ffa

Choose a tag to compare

Changes

Fix transformer chains computed on-demand instead of pre-computed
Transformer chains configured via destination.before now work correctly.
Previously, chains were pre-computed at initialization but the resolution
function was never called, causing before configuration to be silently
ignored.
What changed:

  • Chains now compute at push time from destination.config.before
  • Removed unused collector.transformerChain state
  • Removed dead resolveTransformerGraph() function
  • Dynamic destinations now support before property

Published Packages

walkerOS v1.1.1

30 Jan 14:47
36b69bd

Choose a tag to compare

Changes

Add inline code support for sources, transformers, and destinations

  • Add InlineCodeSchema with push, type, and init fields for embedding
    JavaScript in flow configs
  • Make package field optional in reference schemas (either package or code
    required at runtime)
  • Update flow-complete.json example with inline code demonstrations including
    enricher transformer, debug destination, and conditional mappings

Published Packages

walkerOS v1.1.0

29 Jan 16:54
624f000

Choose a tag to compare

Changes

Enables explicit control over transformer chain order by accepting arrays for
next and before properties, bypassing automatic chain resolution.

Array chain behavior:

Syntax Behavior
"next": "validate" Walks chain via each transformer's next property
"next": ["validate", "enrich"] Uses exact order specified, ignores transformer next

Example:

{
  "sources": {
    "http": {
      "package": "@walkeros/server-source-express",
      "next": ["validate", "enrich", "redact"]
    }
  },
  "destinations": {
    "analytics": {
      "package": "@walkeros/server-destination-gcp",
      "before": ["format", "anonymize"]
    }
  }
}

When walking a chain encounters an array next, it appends all items and stops
(does not recursively resolve those transformers' next properties).

Add inline code syntax for sources, transformers, and destinations

Enables defining custom logic directly in flow.json using code objects instead
of requiring external packages. This is ideal for simple one-liner
transformations.

Example:

{
  "transformers": {
    "enrich": {
      "code": {
        "push": "$code:(event) => ({ ...event, data: { ...event.data, enriched: true } })"
      },
      "config": {}
    }
  }
}

Code object properties:

  • push - The push function with $code: prefix (required)
  • type - Optional instance type identifier
  • init - Optional init function with $code: prefix

Rules:

  • Use package OR code, never both (CLI validates this)
  • config stays separate from code
  • $code: prefix outputs raw JavaScript at bundle time

Session detection extracted to standalone sourceSession

  • New sourceSession for composable session management
  • Browser source no longer includes session by default
  • To restore previous behavior, add sourceSession alongside browser source:
sources: {
  browser: sourceBrowser,
  session: { code: sourceSession, config: { storage: true } }
}

Add transformer support to CLI bundler

  • Detect and bundle transformer packages from flow.json configuration
  • Support transformer chaining via next field
  • Handle $code: prefix for inline JavaScript in transformer config
  • Generate proper import statements and config objects for transformers
  • Document transformer configuration in flow.json

Add default exports for simpler CLI flow.json configuration

Add array support for transformer chain configuration

Published Packages

walkerOS v1.0.1

26 Jan 08:53
b690683

Choose a tag to compare

Changes

Add prefix support for inline JavaScript in flow.json
Values prefixed with are output as raw JavaScript instead of quoted
strings in the bundled output. This enables features like callbacks and
predicates directly in JSON configuration files.
Example:

Outputs:

Auto-detect default export for sources and destinations
Sources and destinations now automatically use their package's default export,
eliminating the need to specify for the main function.
Before (verbose):

After (simpler):

The field is now only needed for utility functions. Explicit
still works for packages without default exports.

Implicit collector: auto-add @walkeros/collector when sources/destinations exist
The CLI now automatically adds and imports
when your flow has sources or destinations. No need to declare the collector
package.
Before (verbose):

After (simpler):

You only need to specify when you want to pin a specific
version or use a local path for development.

Queue on() events until destination init completes
Destinations now receive and other lifecycle events only after
has completed. Previously, was called before , requiring
workarounds like gtag's call inside its handler.
Also renamed queue properties for clarity:

Fix CLI commands hanging after completion
Commands (, , ) would hang indefinitely after completing
successfully due to open handles keeping the Node.js event loop alive.
Root cause: esbuild worker threads and pacote HTTP keep-alive connections were
not being cleaned up.
Fixes:

  • Add after builds to terminate worker threads
  • Add explicit on successful completion for all CLI commands

Breaking change: Unified dynamic pattern syntax in Flow configuration, sorry!
New syntax:

    • Reference definitions (replaces
      )
    • Reference variables (replaces )
  • or - Reference environment variables
    Migration:
    | Old Syntax | New Syntax |
    | --------------------------------------- | -------------------------------------- |
    | | |
    | | |
    | or | or |
    Note: Only supports defaults () because environment
    variables are external and unpredictable. Variables () are explicitly
    defined in config, so missing ones indicate a configuration error and will
    throw.
    Example:

Remove initializeGtag workaround from on() handler
The handler no longer needs to call as a
workaround. With the collector fix, is now guaranteed to run after
completes, so is always available.

Add modulePathIgnorePatterns to Jest config to prevent Haste module collisions
with cached packages

Fix simulate command JSON output to use consistent property instead of

Published Packages

walkerOS v1.0.0

16 Jan 10:46
f1c8c4f

Choose a tag to compare

v1.6.5

07 Aug 19:55
8fea1f0

Choose a tag to compare

  • Support for hooks (#192)
  • Add destination ids and type (#205)
  • Added data contract type (#94)
  • Destination GA4 include update (#212)
  • Destination Meta Pixel contents and content_id support (#251)
  • Overall package version updates

v1.6.4

06 Jun 18:40
64d5d72

Choose a tag to compare

  • Support generic entity properties, when using no entitiy name like data-elb- (#213)
  • Link elements to extend scope with data-elblink="id:parent" and data-elblink="id:child" (#166)
  • Support for multiple globals and properties with Tagger (#215)

v1.6.3

08 May 09:39
e7941f7

Choose a tag to compare

  • Add ES5 build for implementation via GTM (#207)
  • Using JavaScript via elb function with walker logic to also get data and context (#203)
  • Add a runState to elbwalker and also pass it to destinations (#196)

v1.6.2

11 Apr 20:09
fe7318a

Choose a tag to compare

  • Enhanced context scope by using action element as start and not entity (#183)
  • Bugfix for falsely elbLayer push casting (#187)
  • storageWrite returns the written value (#183)
  • Added getByStringDot to unify property access by destinations (#197)
  • Updated dependencies

v1.6.1

13 Feb 13:34
77f5950

Choose a tag to compare

  • walker, utils, and destinations are also available as ESM web modules (#169)
  • added getSession function to trigger session start events (#162)
  • add a destination with config parameter (#156)
  • internal destination queue for better async support (#161)
  • reset timing with each new run (#145)
  • custom destination types as generic interfaces (#156)