{"id":10908,"library":"fmix","title":"MurmurHash3 Finalization Mix","description":"fmix is a JavaScript implementation of the MurmurHash3 x86 finalization mix function, a crucial step in the MurmurHash3 algorithm for generating high-quality hash values. The package provides a lightweight, single-purpose utility to apply this finalization step to a given 32-bit number. The current stable version is 1.0.0, released in July 2021. As a focused cryptographic utility, its release cadence is typically slow, with updates primarily addressing environmental compatibility or minor optimizations rather than new features, signifying a mature and stable API. It differentiates itself by offering only the finalization mix, allowing developers to integrate it into custom hashing implementations or use it alongside other MurmurHash3 components like `murmur-32` or `murmur-128` (from the same author) where modularity is desired, rather than a full end-to-end hashing solution. This allows for fine-grained control over the hashing process. The library is dependency-free, ensuring a minimal footprint.","status":"active","version":"1.0.0","language":"javascript","source_language":"en","source_url":"https://github.com/LinusU/fmix","tags":["javascript"],"install":[{"cmd":"npm install fmix","lang":"bash","label":"npm"},{"cmd":"yarn add fmix","lang":"bash","label":"yarn"},{"cmd":"pnpm add fmix","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Since v1.0.0, this package is ESM-only and must be imported using native ES module syntax. CommonJS `require()` is no longer supported.","wrong":"const fmix = require('fmix')","symbol":"fmix","correct":"import fmix from 'fmix'"}],"quickstart":{"code":"import fmix from 'fmix';\n\n// The fmix function applies the finalization steps of MurmurHash3\n// to an input number, enhancing its distribution and mixing properties.\n// This is typically the last step after all input data has been processed\n// into a single 32-bit hash state.\n\nconst initialHashState = 0xdeadbeef; // Example 32-bit number (hexadecimal)\nconst finalHash = fmix(initialHashState);\n\nconsole.log(`Initial hash state: 0x${initialHashState.toString(16)}`);\nconsole.log(`Finalization mix result: ${finalHash}`);\nconsole.log(`Finalization mix result (hex): 0x${finalHash.toString(16)}`);\n\n// Example with a different input\nconst anotherState = 0x12345678;\nconst anotherFinalHash = fmix(anotherState);\nconsole.log(`\\nAnother state: 0x${anotherState.toString(16)}`);\nconsole.log(`Another finalization mix result: ${anotherFinalHash}`);\n\n// Illustrating the deterministic nature\nconst sameState = 0xdeadbeef;\nconst retryFinalHash = fmix(sameState);\nconsole.log(`\\nRe-applying to 0x${sameState.toString(16)}: ${retryFinalHash}`);","lang":"javascript","description":"Demonstrates how to install `fmix` and compute the finalization mix for a given 32-bit number, showing its deterministic output."},"warnings":[{"fix":"Migrate all `require()` statements to `import` statements (e.g., `import fmix from 'fmix'`) and ensure your project environment supports ESM.","message":"The package converted from CommonJS to ECMAScript Modules (ESM) in v1.0.0.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Ensure your Node.js environment is `^12.20.0`, `^14.13.1`, or `>=16.0.0` or newer to use `fmix@1.0.0` and above.","message":"Support for older Node.js versions was dropped in v1.0.0.","severity":"breaking","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-19T00:00:00.000Z","next_check":"2026-07-18T00:00:00.000Z","problems":[{"fix":"Change `const fmix = require('fmix');` to `import fmix from 'fmix';` in your JavaScript or TypeScript files. Ensure your environment is configured for ESM.","cause":"Attempting to import the `fmix` package using CommonJS `require()` syntax when the package is ESM-only.","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module ... fmix/index.js from ... not supported."}],"ecosystem":"npm"}