{"id":11601,"library":"pure-conditions","title":"Pure Conditions Utility Functions","description":"pure-conditions is a JavaScript utility library providing a collection of pure, isolated functions designed to simplify common conditional logic. It offers methods for tasks like checking for duplicates in arrays, determining if an object or array is empty, validating email formats, and string manipulations such as checking if a string ends with a specific substring. The current stable version is 1.2.3. As a small, focused utility, it doesn't adhere to a strict release cadence but updates as new common conditions are identified or minor improvements are made. Its key differentiators include its adherence to pure function principles (no side effects, predictable output) and the complete isolation of functions, which benefits bundlers and compilers by allowing for efficient tree-shaking and minimal bundle sizes. It focuses on functional programming paradigms for robustness and testability.","status":"active","version":"1.2.3","language":"javascript","source_language":"en","source_url":"https://github.com/buxlabs/pure-conditions","tags":["javascript","pure","utilities"],"install":[{"cmd":"npm install pure-conditions","lang":"bash","label":"npm"},{"cmd":"yarn add pure-conditions","lang":"bash","label":"yarn"},{"cmd":"pnpm add pure-conditions","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"CommonJS `require` is shown in the README, but ESM `import` is preferred for modern Node.js and browser environments.","wrong":"const { hasDuplicates } = require('pure-conditions');","symbol":"hasDuplicates","correct":"import { hasDuplicates } from 'pure-conditions';"},{"note":"All functions are named exports; there is no default export. Destructuring is required.","wrong":"import isEmpty from 'pure-conditions'; // Incorrect default import","symbol":"isEmpty","correct":"import { isEmpty } from 'pure-conditions';"},{"note":"While functional, direct property access like `require('pkg').func` can sometimes lead to issues with bundlers or static analysis compared to explicit destructuring.","wrong":"require('pure-conditions').isEmail;","symbol":"isEmail","correct":"import { isEmail } from 'pure-conditions';"}],"quickstart":{"code":"import { hasDuplicates, isEmpty, endsWith, isEmail } from 'pure-conditions';\n\nconsole.log('--- pure-conditions Quickstart ---');\n\n// Check for duplicates in an array\nconst listWithDuplicates = ['apple', 'banana', 'apple'];\nconsole.log(`Has duplicates (['apple', 'banana', 'apple']): ${hasDuplicates(listWithDuplicates)}`);\n\n// Check if an object is empty\nconst emptyObject = {};\nconst filledObject = { id: 1 };\nconsole.log(`Is {} empty? ${isEmpty(emptyObject)}`);\nconsole.log(`Is { id: 1 } empty? ${isEmpty(filledObject)}`);\n\n// Check if a string ends with another string\nconst sentence = 'Hello, world!';\nconsole.log(`'Hello, world!' ends with 'world!'? ${endsWith(sentence, 'world!')}`);\nconsole.log(`'Hello, world!' ends with 'universe'? ${endsWith(sentence, 'universe')}`);\n\n// Validate an email address\nconst validEmail = 'test@example.com';\nconst invalidEmail = 'invalid-email';\nconsole.log(`'test@example.com' is a valid email? ${isEmail(validEmail)}`);\nconsole.log(`'invalid-email' is a valid email? ${isEmail(invalidEmail)}`);","lang":"javascript","description":"Demonstrates importing and using several utility functions like `hasDuplicates`, `isEmpty`, `endsWith`, and `isEmail` to perform common conditional checks."},"warnings":[{"fix":"Always use named imports with destructuring: `import { functionName } from 'pure-conditions';`","message":"The library primarily uses named exports. Attempting to use a default import (e.g., `import PConditions from 'pure-conditions'`) will result in `undefined` or an error, as there is no default export.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"No fix needed, this is by design. Understand that functions like `hasDuplicates` do not change the array, they only evaluate it.","message":"As a 'pure' utility, functions are designed for immutable operations. While convenient, ensure you understand that these functions do not modify their inputs, but rather return a boolean or new value based on the condition.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"For modern Node.js and bundlers, use ESM `import`. If targeting older environments, ensure your build setup transpiles ESM to CommonJS, or stick to `require()` if feasible for your module type.","message":"Older Node.js environments or build setups might require specific configuration for ESM `import` statements. The README's examples use CommonJS `require`, which is universally supported but less modern.","severity":"gotcha","affected_versions":"<14.0.0"}],"env_vars":null,"last_verified":"2026-04-19T00:00:00.000Z","next_check":"2026-07-18T00:00:00.000Z","problems":[{"fix":"Ensure you are using named imports with destructuring: `import { hasDuplicates } from 'pure-conditions';` or `const { hasDuplicates } = require('pure-conditions');`","cause":"Attempting to call `hasDuplicates` on an `undefined` or incorrectly imported object, often due to a wrong import statement (e.g., default import or no destructuring).","error":"TypeError: Cannot read properties of undefined (reading 'hasDuplicates')"},{"fix":"Either convert your file/project to an ESM module by setting `'type': 'module'` in `package.json` or rename the file to `.mjs`, or use CommonJS `require`: `const { someFunction } = require('pure-conditions');`","cause":"Using `import { someFunction } from 'pure-conditions';` in a CommonJS module context (a file without `'type': 'module'` in `package.json` and `.js` extension, or a `.cjs` file).","error":"SyntaxError: Unexpected token '{'"}],"ecosystem":"npm"}