UNPKG

subflow

Version:

Safety your data flow in TypeScript with flow-based primitives.

81 lines (53 loc) 2.08 kB
# 🌊 Subflow ![npm version](https://img.shields.io/npm/v/subflow) ![license](https://img.shields.io/npm/l/subflow) ![downloads](https://img.shields.io/npm/dm/subflow) > A **type-safe**, **chainable**, and **monadic** utility library for safely manipulating data in TypeScript. --- ## ✨ Introduction **Subflow** is a flow-based, monadic primitive library built for **safe**, **immutable**, and **composable** data handling in TypeScript. It enables declarative and functional-style operations on fundamental types like `string`, `number`, `boolean`, `array`, and `object`. Each Flow provides **chainable methods** and **immutable returns**, ensuring predictable transformations and error-safe chaining. --- ## 📦 Installation ```bash npm install subflow # or yarn add subflow # or pnpm add subflow ``` --- ## 🚀 Usage Examples ```ts import { numberFlow, stringFlow, arrayFlow, objectFlow, booleanFlow } from "subflow"; // Number Flow numberFlow(42).add(8).multiply(2).get(); // 100 // String Flow stringFlow(" Hello ").trim().toUpper().concat("WORLD").get(); // "HELLOWORLD" // Array Flow arrayFlow([1, 2, 3, 4]) .filter((x) => x % 2 === 0) .map((x) => x * 10) .get(); // [20, 40] // Object Flow objectFlow({ name: "John" }).set("age", 30).get(); // { name: "John", age: 30 } // Boolean Flow booleanFlow(true).not().or(false).get(); // false ``` --- ## 📌 Design Principles - **Immutable**: All flows return new instances - **Composable**: Chainable transformations - **Safe**: Built-in validation and error fallback - **Predictable**: No unexpected runtime throws - **Type-safe**: Inferred types across the chain --- ## 🛠️ Contributing Subflow is an open-source project and contributions are very welcome! - Open an issue for bug reports or feature suggestions - Submit a pull request for fixes or improvements - Check out the roadmap and help us grow the flow 🌻 --- ## 📄 License [MIT](https://opensource.org/licenses/MIT)