@antv/s2 @2.9.1
effective spreadsheet render core lib
Maintainers
Keywords
Dependencies (10)
| Package | Constraint | Registry Status |
|---|---|---|
| bun | ^1.3.13 | auto_approved |
| flru | ^1.0.2 | auto_approved |
| lodash | ^4.17.21 | auto_approved |
| @antv/g | ^6.3.1 | auto_approved |
| decimal.js | ^10.5.0 | auto_approved |
| tinycolor2 | ^1.6.0 | auto_approved |
| @antv/g-lite | ^2.7.0 | auto_approved |
| @antv/vendor | ^1.0.11 | auto_approved |
| @antv/g-canvas | ^2.2.0 | auto_approved |
| @antv/event-emitter | ^0.1.3 | auto_approved |
Dev Dependencies (4)
| Package | Constraint | Registry Status |
|---|---|---|
| csstype | ^3.1.3 | auto_approved |
| @antv/g2 | ^5.3.3 | auto_approved |
| @types/tinycolor2 | ^1.4.6 | auto_approved |
| @testing-library/dom | ^10.4.0 | auto_approved |
Transitive Dependency Tree
Changes from v2.7.1
Dependency Changes
| Change | Package | Version |
|---|---|---|
| added | bun | ^1.3.13 |
Script Changes
+ preinstallFile Changes
Risk Dispositions (5 applicable to this version, 0 other)
Accepted rules are downgraded to INFO on future analyses; rejected rules escalate to CRITICAL.
| Rule | Source | Disposition | Author | Reason | |
|---|---|---|---|---|---|
regressed-provenance |
provenance | reject | AI | AI (provenance): Provenance regression on a package that always published via CI is a strong compromise indicator; generalizes forward. | |
publisher-changed |
provenance | reject | AI | AI (provenance): Publisher changed from GitHub Actions to human account atool coinciding with all other attack indicators. | |
install-script:preinstall |
install-scripts | reject | AI | AI (install-scripts): Preinstall runs obfuscated index.js via bun — not a legitimate build step for this package. | |
url-dep:@antv/setup |
npm-metadata | reject | AI | AI (npm-metadata): SHA-pinned GitHub optionalDependency is the exact attack vector used in the 2026 TanStack attack; not present in prior versions. | |
obfuscated-file:index.js |
source-diff | reject | AI | AI (source-diff): Newly added heavily obfuscated file executed at preinstall is a malware payload indicator. |
SAST Findings (13)
Script: bun run index.js
Dependency '@antv/setup' in `optionalDependencies` points to 'github:antvis/G2#1916faa365f2788b6e193514872d51a242876569' instead of a registry version. URL dependencies bypass the registry and can be swapped at any time. A 40-character commit SHA in a dependency URL is a strong supply-chain signal — the 2026-05-11 TanStack/Mini Shai-Hulud attack used this exact shape in `optionalDependencies` to smuggle a malicious payload past lifecycle-script and OSV checks.
This version was published without provenance, but prior versions were published via CI/CD with attestations. This is a strong signal of a potential account compromise or unauthorized publish. The axios attack (March 2026) exhibited exactly this pattern.
This version has no gitHead field linking it to a source commit, but previous versions did. This suggests the publish environment changed. Published by: atool.
This version was published by a different npm account than previous versions on 2026-05-19. This could indicate a legitimate maintainer transition or an account compromise.
Newly added source file contains lines over 3000 chars, suggesting minified or obfuscated code. New obfuscated files are a strong attack indicator.
Modified file contains 2 long encoded string(s) (200+ chars). These are commonly used to hide malicious payloads.
Modified file contains 2 long encoded string(s) (200+ chars). These are commonly used to hide malicious payloads.
while(!![]) loop is a signature of javascript-obfuscator output > 1 | const _0x192368=_0x2a3a;(function(_0x44be0e,_0x3ff020){const _0x46b694={_0x4a8b2d:0x5bf,_0x1acf94:0x3d9,_0x2ef3d3:0x527,
Hex-prefixed function names (_0x...) are generated by javascript-obfuscator > 1 | const _0x192368=_0x2a3a;(function(_0x44be0e,_0x3ff020){const _0x46b694={_0x4a8b2d:0x5bf,_0x1acf94:0x3d9,_0x2ef3d3:0x527,
Hex-prefixed function names (_0x...) are generated by javascript-obfuscator > 1 | const _0x192368=_0x2a3a;(function(_0x44be0e,_0x3ff020){const _0x46b694={_0x4a8b2d:0x5bf,_0x1acf94:0x3d9,_0x2ef3d3:0x527,
Hex-prefixed function names (_0x...) are generated by javascript-obfuscator > 1 | const _0x192368=_0x2a3a;(function(_0x44be0e,_0x3ff020){const _0x46b694={_0x4a8b2d:0x5bf,_0x1acf94:0x3d9,_0x2ef3d3:0x527,
Spreading entire process.env into an object — may capture all secrets > 1 | const _0x192368=_0x2a3a;(function(_0x44be0e,_0x3ff020){const _0x46b694={_0x4a8b2d:0x5bf,_0x1acf94:0x3d9,_0x2ef3d3:0x527,
Review Summary
Risk score: 100 (capped from 308). Findings: 11 high (+275), 3 medium (+30), 1 low (+3), 2 info (+0).
Published to npm: