Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@totalperspective/pondermatic

Package Overview
Dependencies
Maintainers
0
Versions
219
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@totalperspective/pondermatic

Functional effect system driven rules engine

  • 1.24.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

Pondermatic

Functional effect system-driven rules engine for Clojure/ClojureScript & Javascript

Clojars Project npm version

JVM CLLS Browser CLJS NodeJS NodeJS

Overview

Pondermatic is a functional effect system-driven rules engine designed for use with Clojure, ClojureScript, and JavaScript. It provides a robust framework for defining and executing rules in a declarative manner. Pondermatic helps manage side effects in a predictable and composable way, making it easier to integrate with various data sources and build complex rule-based systems.

Features

  • Functional effect system for managing side effects in a predictable and composable way
  • Seamless integration with Clojure, ClojureScript, and JavaScript projects
  • Declarative rule definitions for clear and concise rule management
  • Integration with various data sources for flexible data handling

Architecture

Pondermatic's architecture consists of the following key components:

  • Ruleset: Defines the rules to be executed.
  • Dataset: Contains the data to be processed by the rules.
  • Engine: Executes the rules on the dataset and manages the state.

Documentation

Installation

Clojure/ClojureScript

Add the following dependency to your deps.edn file:

{:deps {tech.totalperspective/pondermatic {:mvn/version "1.11.10"}}}

JavaScript

Install via npm:

npm install @totalperspective/pondermatic

Usage

Clojure/ClojureScript

(ns example.core
  (:require [pondermatic.core :as p]))

(def rules
  (p/ruleset
   [{:id :example-rule
     :rule/when {:data/key ?value}
     :rule/then {:data/new-key ?value}}]))

(def data
  (p/dataset
   [{:key "value"}]))

(def engine (p/->engine "example" :reset-db? true))

(-> engine
    (p/|> {:->db rules})
    (p/|> {:->db data})
    p/stop)

JavaScript

import pondermatic from '@totalperspective/pondermatic';

// Create a new engine instance
const engine = pondermatic.createEngine('example', true);

// Define a ruleset
const rules = pondermatic.ruleset([
  {
    id: 'example-rule',
    'rule/when': { 'data/key': '?value' },
    'rule/then': { 'data/new-key': '?value' }
  }
]);

// Define a dataset
const data = pondermatic.dataset([{ key: 'value' }]);

// Load the ruleset into the engine
pondermatic.sh(engine, { '->db': rules });

// Load the dataset into the engine
pondermatic.sh(engine, { '->db': data });

// Stop the engine
pondermatic.stop(engine);

Community

Roadmap

  • Improved performance optimizations
  • Enhanced data source integrations
  • Additional rule definition capabilities
  • Expanded documentation and examples

Contributing

Contributions are welcome! Please read the Contributing Guidelines for more information.

Code of Conduct

This project is governed by the Code of Conduct. By participating, you are expected to uphold this code.

FAQs

Package last updated on 08 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc