// npm 패키지
@antv/f2-canvas
微信小程序 F2 图表组件
버전
9
메인테이너
51
라이선스
MIT
최초 publish
2018-10-21
publisher
simaq
tarball
19,171 B
AUTO-PUBLISHED·1개 버전 인덱싱됨·최근 publish: 2018-12-20
// publisher 캠페인by simaq
이 계정에서 catch된 패키지 4건고립된 catch가 아닙니다. 동일 publisher가 3개의 다른 패키지를 추가로 발행했고, 모두 파이프라인이 catch했습니다 — 일회성이 아닌 조직적 캠페인의 형태. 아래 링크는 각 형제 catch의 분석으로 이동합니다.
// offending code· @1.0.5· 3 files flagged
llm: benign · 0.85→ 의심 전송지 없음, 원격 실행 형태 없음 — 1 known-vendor host(s).
- @1.0.5··AUTO-PUBLISHED·publisher: simaqheuristic 75/100static flags 2llm benign (0.85) via ollamaosv-flagged:MAL-2026-3891public-github-pushchild-process-spawn
→ 의심 전송지 없음, 원격 실행 형태 없음 — 1 known-vendor host(s).
// offending code· 3 files flaggedpatterns: 2
--- package/package.json (excerpt) --- { "name": "@antv/f2-canvas", "version": "1.0.5", "description": "微信小程序 F2 图表组件", "main": "miniprogram_dist/index.js", "scripts": { "dev": "gulp dev --develop", "watch": "gulp watch --develop --watch", "build": "gulp", "dist": "npm run build", "clean-dev": "gulp clean --develop", "clean": "gulp clean", "test": "jest ./test/* --silent --bail", "coverage": "jest ./test/* --coverage --bail", "lint": "eslint \"src/**/*.js\"", "lint-tools": "eslint \"tools/**/*.js\" --rule \"import/no-extraneous-dependencies: false\"" }, "miniprogram": "miniprogram_dist", "jest": { "testEnvironment": "jsdom", "testURL": "https://jest.test", "collectCoverageFrom": [ "src/**/*.js" ], "moduleDirectories": [ "node_modules", "src" ] }, "repository": { "type": "git", "url": "https://github.com/simaQ/f2-canvas.git" }, "author": "sima.zhang1990@gmail.com", "license": "MIT", "devDependencies": { "babel-core": "^6.26.3", "babel-loader": "^7.1.5", "babel-plugin-module-resolver": "^3.1.1", "babel-preset-env": "^1.7.0", "colors": "^1.3.1", "eslint": "^5.3.0", "eslint-loader": "^2.1.0", "gulp": "^4.0.0", "gulp-clean": "^0.4.0", "gulp-if": "^2.0.2", "gulp-install": "^1.1.0", "gulp-less": "^3.5.0", "gulp-rename": "^1.4.0", "gulp-sourcemaps": "^2.6.4", "j-component": "git+https://github.com/JuneAndGreen/j-component.git", "jest": "^23.5. --- package/src/index.js (excerpt) --- // f2-canvas.js import F2 from '@antv/wx-f2' Component({ /** * 组件的属性列表 */ properties: { canvasId: { type: String, value: 'f2-canvas' }, opts: { type: Object } }, /** * 组件的初始数据 */ data: { }, ready() { if (!this.data.opts) { console.warn('组件需绑定 opts 变量,例:<ff-canvas id="mychart-dom-bar" canvas-id="mychart-bar" opts="{{ opts }}"></ff-canvas>') return } if (!this.data.opts.lazyLoad) { this.init() } }, /** * 组件的方法列表 */ methods: { init(callback) { const version = wx.version.version.split('.').map(n => parseInt(n, 10)) const isValid = version[0] > 1 || (version[0] === 1 && version[1] > 9) || (version[0] === 1 && version[1] === 9 && version[2] >= 91) if (!isValid) { console.error('微信基础库版本过低,需大于等于 1.9.91。') return } const ctx = wx.createCanvasContext(this.data.canvasId, this) // 获取小程序上下文 const canvas = new F2.Renderer(ctx) this.canvas = canvas const query = wx.createSelectorQuery().in(this) query.select('.f2-canvas').boundingClientRect(res => { if (typeof callback === 'function') { this.chart = callback(canvas, res.width, res.height, F2) } else if (this.data.opts && this.data.opts.onInit) { this.chart = this.data.opts.onInit(canvas, res.width, res.height, F2) } }).exec() }, touchStart(e) { if (this.canvas) { this.canvas.e --- package/miniprogram_dist/index.js (excerpt) --- module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ _
