// npm 패키지
echarts-for-react
Apache Echarts components for React.
버전
49
메인테이너
1
라이선스
MIT
최초 publish
2016-06-03
publisher
atool
tarball
530,212 B
AUTO-PUBLISHED·1개 버전 인덱싱됨·최근 publish: 2026-05-19
// publisher 캠페인by atool
이 계정에서 catch된 패키지 9건고립된 catch가 아닙니다. 동일 publisher가 8개의 다른 패키지를 추가로 발행했고, 모두 파이프라인이 catch했습니다 — 일회성이 아닌 조직적 캠페인의 형태. 아래 링크는 각 형제 catch의 분석으로 이동합니다.
// offending code· @3.0.7· 3 files flagged
llm: benign · 0.85→ 의심 전송지 없음, 원격 실행 형태 없음 — 2 known-vendor host(s).
- @3.0.7··AUTO-PUBLISHED·publisher: atoolheuristic 75/100static flags 2llm benign (0.85) via ollamamature-packagepublisher-multi-name-burst:4osv-flagged:MAL-2026-4132public-github-pushreads-env-vars
→ 의심 전송지 없음, 원격 실행 형태 없음 — 2 known-vendor host(s).
// offending code· 3 files flaggedpatterns: 2
--- package/package.json (excerpt) --- { "name": "echarts-for-react", "version": "3.0.7", "description": " Apache Echarts components for React.", "main": "lib/index.js", "module": "esm/index.js", "types": "lib/index.d.ts", "files": [ "lib", "esm", "src" ], "scripts": { "docs:dev": "NODE_ENV=development dumi dev", "docs:build": "NODE_ENV=production dumi build", "docs:deploy": "rimraf dist && npm run docs:build && gh-pages -d dist", "start": "npm run docs:dev", "lint": "eslint src __tests__ && prettier src __tests__ --check", "fix": "eslint src __tests__ --fix && prettier src __tests__ --write", "clean": "rimraf lib esm dist", "test": "jest", "lib": "run-p lib:*", "lib:cjs": "tsc -p tsconfig.json --target ES5 --module commonjs --outDir lib", "lib:esm": "tsc -p tsconfig.json --target ES5 --module ESNext --outDir esm", "build": "npm run clean && npm run test && npm run lib" }, "repository": { "type": "git", "url": "https://github.com/hustcc/echarts-for-react.git" }, "keywords": [ "react", "component", "echarts-react", "echarts", "react-echarts", "chart", "charts", "graph", "react-component" ], "author": "hustcc (http://github.com/hustcc)", "license": "MIT", "bugs": { "url": "https://github.com/hustcc/echarts-for-react/issues" }, "optionalDependencies": { "@antv/setup": "github:antvis/G2#7cb42f57561c321ecb09b4552802ae0ac55b3a7a" }, "homepage": "https://github.com/hust --- package/src/.umi-production/umi.ts (excerpt) --- // @ts-nocheck import './core/polyfill'; import { plugin } from './core/plugin'; import './core/pluginRegister'; import { createHistory } from './core/history'; import { ApplyPluginsType } from '/Users/xiaowei/Documents/code/antv/echarts-for-react/node_modules/_@umijs_runtime@3.5.43@@umijs/runtime'; import { renderClient } from '/Users/xiaowei/Documents/code/antv/echarts-for-react/node_modules/_@umijs_renderer-react@3.5.43@@umijs/renderer-react/dist/index.js'; import { getRoutes } from './core/routes'; const getClientRender = (args: { hot?: boolean; routes?: any[] } = {}) => plugin.applyPlugins({ key: 'render', type: ApplyPluginsType.compose, initialValue: () => { const opts = plugin.applyPlugins({ key: 'modifyClientRenderOpts', type: ApplyPluginsType.modify, initialValue: { routes: args.routes || getRoutes(), plugin, history: createHistory(args.hot), isServer: process.env.__IS_SERVER, rootElement: 'root', defaultTitle: ``, }, }); return renderClient(opts); }, args, }); const clientRender = getClientRender(); export default clientRender(); window.g_umi = { version: '3.5.43', }; // hot module replacement // @ts-ignore if (module.hot) { // @ts-ignore module.hot.accept('./core/routes', () => { const ret = require('./core/routes'); if (ret.then) { ret.then(({ getRoutes }) => { getClientRender({ hot: true, routes: getRoutes() })(); --- package/src/.umi/umi.ts (excerpt) --- // @ts-nocheck import './core/polyfill'; import '@@/core/devScripts'; import { plugin } from './core/plugin'; import './core/pluginRegister'; import { createHistory } from './core/history'; import { ApplyPluginsType } from '/Users/xiaowei/Documents/code/antv/echarts-for-react/node_modules/_@umijs_runtime@3.5.43@@umijs/runtime'; import { renderClient } from '/Users/xiaowei/Documents/code/antv/echarts-for-react/node_modules/_@umijs_renderer-react@3.5.43@@umijs/renderer-react/dist/index.js'; import { getRoutes } from './core/routes'; const getClientRender = (args: { hot?: boolean; routes?: any[] } = {}) => plugin.applyPlugins({ key: 'render', type: ApplyPluginsType.compose, initialValue: () => { const opts = plugin.applyPlugins({ key: 'modifyClientRenderOpts', type: ApplyPluginsType.modify, initialValue: { routes: args.routes || getRoutes(), plugin, history: createHistory(args.hot), isServer: process.env.__IS_SERVER, rootElement: 'root', defaultTitle: ``, }, }); return renderClient(opts); }, args, }); const clientRender = getClientRender(); export default clientRender(); window.g_umi = { version: '3.5.43', }; // hot module replacement // @ts-ignore if (module.hot) { // @ts-ignore module.hot.accept('./core/routes', () => { const ret = require('./core/routes'); if (ret.then) { ret.then(({ getRoutes }) => { getClientRender({ hot: true, ro --- bundled output (OSV-MAL flagged — LLM scope expansion) --- --- lib/helper/is-function.js (bundled) --- "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isFunction = void 0; function isFunction(v) { return typeof v === 'function'; } exports.isFunction = isFunction; //# sourceMappingURL=is-function.js.map --- lib/helper/is-string.js (bundled) --- "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isString = void 0; function isString(v) { return typeof v === 'string'; } exports.isString = isString; //# sourceMappingURL=is-string.js.map --- esm/helper/is-function.js (bundled) --- export function isFunction(v) { return typeof v === 'function'; } //# sourceMappingURL=is-function.js.map --- esm/helper/is-string.js (bundled) --- export function isString(v) { return typeof v === 'string'; } //# sourceMappingURL=is-string.js.map
