Dependency-free, CSP-safe elementwise and aggregate operations for ndarrays.
Documentation | npm | Issues | Repository
Current package version: 1.0.3
A dependency-free, CSP-safe continuation of ndarray-ops@1.2.2. It preserves
the complete 150-function CommonJS API, including the historical
ndarray-ops.js deep entry, while adding native ESM, a classic-browser build,
and first-party TypeScript 3.9 declarations.
Stackline maintains this package independently. It is not affiliated with or endorsed by the original project.
| Item | Value |
|---|---|
| Package | @stackline/ndarray-ops@1.0.3 |
| Node.js runtime | >=18.0.0 |
| CommonJS / primary entry | ./ndarray-ops.js |
| ES module entry | ./index.mjs |
| Type declarations | ./index.d.ts |
npm install @stackline/ndarray-opsAn identity-preserving migration keeps existing imports unchanged:
{
"dependencies": {
"ndarray-ops": "npm:@stackline/ndarray-ops@^1.0.1"
}
}const ops = require('ndarray-ops')
const same = require('ndarray-ops/ndarray-ops.js')Native ESM supports both default and named imports:
import ops, { add, sum } from '@stackline/ndarray-ops'Loading browser.js as a classic script exposes globalThis.ndarrayOps; AMD
loaders receive the same operation object.
Declarations support TypeScript 3.9 CommonJS import assignment and synthetic default imports. Conditional named ESM declarations are selected by TypeScript 4.7 and later.
Runtime code generation is not used. The package loads and runs under Node's
string-code-generation prohibition and in a browser VM where Function
construction is disabled. This removes the upstream unsafe-eval requirement.
Static typed paths for the common one-, two-, and three-dimensional layouts avoid the upstream compiler's cold specialization cost. CI also enforces a conservative hot-loop bound: a 15-case repeated-batch matrix of large contiguous and mixed-order operations must stay within 5x upstream and under 50 ms per call on the test host. That gate guards regressions; exact performance depends on runtime, dtype, rank, and layout.
See COMPATIBILITY_CONTRACT.md for traversal order, empty/rank-zero behavior,
generic side effects, validation hardening, and exact return contracts.
Review inputs and the package-specific compatibility limits before processing untrusted data. Report suspected vulnerabilities as described in the security policy.
The package includes all upstream operator families:
- arithmetic and bitwise:
add,sub,mul,div,mod,band,bor,bxor,lshift,rshift, andrrshift; - logical and comparisons:
and,or,eq,neq,lt,gt,leq, andgeq; - unary and Math functions, including reversed
atan2op*andpowop*forms; assign,assigns,random,equals,any,all, numeric norms and reductions,sup,inf,argmin, andargmax.
The historical suffixes remain: eq means in-place, s means a scalar right
operand, seq combines both, and op reverses atan2 or pow operands.
Every elementwise/mutating function returns its first ndarray argument.
Views may use arbitrary non-negative signed-32-bit integer shapes, positive,
zero or negative signed-32-bit integer strides and offsets, and any permutation in order.
Typed and generic (data.get/data.set) storage are supported. Shapes must
match exactly across array arguments.
git clone https://github.com/alexandroit/stackline-ndarray-ops.git
cd stackline-ndarray-ops
npm ci
npm run verifyRelease tooling uses Node.js 24.20.0 and npm 11.19.0. The consumer runtime contract remains the one documented above.
Run the repository's existing consumer/package check after installing development dependencies:
npm run test:smokeRun npm run verify and inspect the package contents before release. Publish a new version through the GitHub Actions publishing workflow, using the SHA-512 digest of the reviewed tarball. Verify the exact published version, tarball integrity, and npm provenance after the run.
MIT. Original runtime and DefinitelyTyped attribution is preserved in
LICENSE, NOTICE, and THIRD_PARTY_LICENSES.md.
- Stackline maintainers.
- Mikola Lysenko.
- DefinitelyTyped contributors.
- Copyright (c) 2013 Mikola Lysenko.
- Copyright (c) 2026 Stackline maintainers.
- Stackline maintenance: Alexandro Paixao Marques and Stackline contributors.
Original copyright, license notices and contributor acknowledgements remain part of this distribution. Stackline maintenance does not replace authorship of the original work.
Use this repository's issue tracker for reproducible bugs and feature requests. Join r/Stackline for examples, usage questions and release discussions.