
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
@dekzer/kissfft
Advanced tools
Fast, tiny FFTs in JS via WebAssembly-compiled KISS FFT.
Works in Node and modern browsers; supports 1‑D / N‑D, complex and real (Hermitian‑packed) transforms.
pnpm add @dekzer/kissfft
# or:
npm i @dekzer/kissfft
yarn add @dekzer/kissfft
ESM‑only. Node 18+ or any modern browser.
import {
createKissFft, // 1-D complex
createKissRealFft, // 1-D real (packed spectrum)
createKissNdFft, // N-D complex
createKissNdRealFft, // N-D real (packed along last dim)
nextFastSize,
cleanupKissFft,
} from '@dekzer/kissfft';
// 1-D complex
const N = 1024;
const fft = await createKissFft(N);
const x = new Float32Array(2 * N); // [re0,im0,re1,im1,...]
const X = fft.forward(x); // len 2*N
const x2 = fft.inverse(X); // len 2*N ; includes 1/N
fft.dispose();
// 1-D real (packed)
const rfft = await createKissRealFft(N); // N must be even
const xr = new Float32Array(N);
const Xp = rfft.forward(xr); // len N+2 (packed)
const xr2 = rfft.inverse(Xp); // len N ; includes 1/N
rfft.dispose();
// Global cleanup (frees any cached WASM plans)
cleanupKissFft();
[re, im, …] → len = 2·N.inverse() scales by 1/N.inverse() scales by 1/N.size = ∏ shape[i] → interleaved len = 2·size.inverse() scales by 1/size.last = shape[k‑1] (even) →size + 2·(size/last); inverse() scales by 1/size.Factories (async):
await createKissFft(N) // 1-D complex
await createKissRealFft(N) // 1-D real (N even)
await createKissNdFft(shape) // N-D complex
await createKissNdRealFft(shape) // N-D real (last dim even)
Helpers (sync):
const fast = nextFastSize(n); // next KISS-friendly size (2·3·5 factors)
cleanupKissFft(); // free all cached WASM plans
Instances (sync methods):
forward(input[, out?]): Float32Array
inverse(input[, out?]): Float32Array
dispose(): void
For quick demos or CodePen/JSFiddle:
<script src="https://unpkg.com/@dekzer/kissfft/dist/kissfft.umd.js"></script>
<script>
const { createKissFft } = window.DekzerKissfft;
(async () => {
const fft = await createKissFft(1024);
const x = new Float32Array(2048);
const X = fft.forward(x);
console.log('bins:', X.length);
fft.dispose();
})();
</script>
jsDelivr also works:
https://cdn.jsdelivr.net/npm/@dekzer/kissfft/dist/kissfft.umd.js
nextFastSize(n) to pick friendlier sizes for real‑time workloads.THIRD_PARTY_LICENSES/ and NOTICE.FAQs
WebAssembly-compiled KISS FFT library with TypeScript bindings
We found that @dekzer/kissfft demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

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.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.