// npm 패키지
@antv/wx-f2
F2 for weixin mini-program
버전
17
메인테이너
51
라이선스
MIT
최초 publish
2018-10-21
publisher
zengyue
tarball
464,386 B
AUTO-PUBLISHED·1개 버전 인덱싱됨·최근 publish: 2020-08-27
// publisher 캠페인by zengyue
이 계정에서 catch된 패키지 9건고립된 catch가 아닙니다. 동일 publisher가 8개의 다른 패키지를 추가로 발행했고, 모두 파이프라인이 catch했습니다 — 일회성이 아닌 조직적 캠페인의 형태. 아래 링크는 각 형제 catch의 분석으로 이동합니다.
// offending code· @2.1.1· 1 file flagged
llm: benign · 0.85→ 의심 전송지 없음, 원격 실행 형태 없음 — 3 known-vendor host(s).
- @2.1.1··AUTO-PUBLISHED·publisher: zengyueheuristic 75/100static flags 1llm benign (0.85) via ollamamature-packageosv-flagged:MAL-2026-4097child-process-spawn
→ 의심 전송지 없음, 원격 실행 형태 없음 — 3 known-vendor host(s).
// offending code· 1 file flaggedpatterns: 1
--- package/src/index.js (excerpt) --- import F2 from '@antv/f2'; function wrapEvent(e) { if (!e) return; if (!e.preventDefault) { e.preventDefault = function() {}; } return e; } Component({ /** * 组件的属性列表 */ properties: { onInit: { type: 'Function', value: () => {} } }, /** * 组件的初始数据 */ data: { }, ready() { const query = wx.createSelectorQuery().in(this); query.select('.f2-canvas') .fields({ node: true, size: true }) .exec(res => { const { node, width, height } = res[0]; const context = node.getContext('2d'); const pixelRatio = wx.getSystemInfoSync().pixelRatio; // 高清设置 node.width = width * pixelRatio; node.height = height * pixelRatio; const config = { context, width, height, pixelRatio }; const chart = this.data.onInit(F2, config); if (chart) { this.chart = chart; this.canvasEl = chart.get('el'); } }); }, /** * 组件的方法列表 */ methods: { touchStart(e) { const canvasEl = this.canvasEl; if (!canvasEl) { return; } canvasEl.dispatchEvent('touchstart', wrapEvent(e)); }, touchMove(e) { const canvasEl = this.canvasEl; if (!canvasEl) { return; } canvasEl.dispatchEvent('touchmove', wrapEvent(e)); }, touchEnd(e) { const canvasEl = this.canvasEl; if (!canvasEl) { return; } canvasEl.dispatchEv --- bundled output (OSV-MAL flagged — LLM scope expansion) --- --- dist/index.js (bundled) --- (function (factory) { typeof define === 'function' && define.amd ? define(factory) : factory(); }((function () { 'use strict'; var isArrayLike = function (value) { /** * isArrayLike([1, 2, 3]) => true * isArrayLike(document.body.children) => true * isArrayLike('abc') => true * isArrayLike(Function) => false */ return value !== null && typeof value !== 'function' && isFinite(value.length); }; var contains = function (arr, value) { if (!isArrayLike(arr)) { return false; } return arr.indexOf(value) > -1; }; var filter = function (arr, func) { if (!isArrayLike(arr)) { return arr; } var result = []; for (var index = 0; index < arr.length; index++) { var value = arr[index]; if (func(value, index)) { result.push(value); } } return result; }; var toString = {}.toString; var isType = function (value, type) { return toString.call(value) === '[object ' + type + ']'; }; /** * 是否为函数 * @param {*} fn 对象 * @return {Boolean} 是否函数 */ var isFunction = (function (value) { return isType(value, 'Function'); }); // isFinite, var isNil = function (value) { /** * isNil(null) => true * isNil() => true */ return value === null || value === undefined; }; var isArray = (function (value) { return Array.isArray ? Array.isArray(value) : isType(value, 'Array'); }); var isObject = (function (value) { /** * isObject({}) => true * isObject([1, 2, 3]) => true * isObject(Function) => true * isObject(null) => false */ var type = typeof value; return value !== null && type === 'object' || type === 'function'; }); function each(elements, f
