// npm package
@antv/f6
A Mobile Graph Visualization Framework in JavaScript
versions
19
maintainers
51
license
MIT
first publish
2021-05-30
publisher
openwayne
tarball
4,869,796 B
AUTO-PUBLISHED·1 version indexed·latest published 2023-01-18
// publisher campaignby openwayne
9 caught packages from this accountThis is not an isolated catch. The same publisher has shipped 8 other packages that our pipeline flagged — the shape of a coordinated campaign, not a one-off. Each link below opens that sibling's analysis.
// offending code· @0.0.19· 2 files flagged
llm: benign · 0.85→ No suspicious destination, no remote-exec shape — 1 known-vendor host(s).
- @0.0.19··AUTO-PUBLISHED·publisher: openwayneheuristic 75/100static flags 1llm benign (0.85) via ollamamature-packageosv-flagged:MAL-2026-3900base64-decode
→ No suspicious destination, no remote-exec shape — 1 known-vendor host(s).
// offending code· 2 files flaggedpatterns: 1
--- package/lib/graph/graph.js (excerpt) --- "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerGraph = exports.default = void 0; var _tslib = require("tslib"); var _gMobile = require("@antv/g-mobile"); var _matrixUtil = require("@antv/matrix-util"); var _util = require("@antv/util"); var _f6Core = require("@antv/f6-core"); var _global = _interopRequireDefault(require("../global")); var _controller = require("./controller"); var _domUtil = require("@antv/dom-util"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var registerGraph = function registerGraph(graphName, GraphFunction, G6) { if (G6[graphName]) { console.warn("The graph with the name ".concat(graphName, " exists already, it will be overridden")); } G6[graphName] = GraphFunction(G6); return G6; }; exports.registerGraph = registerGraph; var Graph = /** @class */function (_super) { (0, _tslib.__extends)(Graph, _super); function Graph(cfg) { var _this = _super.call(this, cfg) || this; if (_this.get('renderer').startsWith('mini')) { _this.set('context', cfg.context); } _super.prototype.init.call(_this); var defaultNode = _this.get('defaultNode'); if (!defaultNode) { _this.set('defaultNode', { type: 'circle' }); } if (!defaultNode.type) { defaultNode.type = 'circle'; _this.set('defaultNode', defaultNode); } _this.destroyed = false; return _this; } // 这里是为了规避基类那个deepmix,等待架构 --- package/es/graph/graph.js (excerpt) --- import { __extends } from "tslib"; import { Canvas as GMobileCanvas } from '@antv/g-mobile'; import { mat3 } from '@antv/matrix-util'; import { clone, deepMix, each, isString, isNumber } from '@antv/util'; import { AbstractGraph } from '@antv/f6-core'; import Global from '../global'; import { LayoutController, EventController } from './controller'; import { createDom } from '@antv/dom-util'; export var registerGraph = function registerGraph(graphName, GraphFunction, G6) { if (G6[graphName]) { console.warn("The graph with the name ".concat(graphName, " exists already, it will be overridden")); } G6[graphName] = GraphFunction(G6); return G6; }; var Graph = /** @class */function (_super) { __extends(Graph, _super); function Graph(cfg) { var _this = _super.call(this, cfg) || this; if (_this.get('renderer').startsWith('mini')) { _this.set('context', cfg.context); } _super.prototype.init.call(_this); var defaultNode = _this.get('defaultNode'); if (!defaultNode) { _this.set('defaultNode', { type: 'circle' }); } if (!defaultNode.type) { defaultNode.type = 'circle'; _this.set('defaultNode', defaultNode); } _this.destroyed = false; return _this; } // 这里是为了规避基类那个deepmix,等待架构调整 Graph.prototype.init = function () {}; Graph.prototype.emitEvent = function (event) { var canvas = this.get('canvas'); event.type = event.type.toLowerCase(); canvas.registerEventCallback(event); --- bundled output (OSV-MAL flagged — LLM scope expansion) --- --- lib/behavior/activate-relations.js (bundled) --- "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _default = { getDefaultCfg: function getDefaultCfg() { return { activeState: 'active', inactiveState: 'inactive', resetSelected: false, shouldUpdate: function shouldUpdate() { return true; } }; }, getEvents: function getEvents() { return { 'node:tap': 'setAllItemStates', 'canvas:tap': 'clearAllItemStates' }; }, setAllItemStates: function setAllItemStates(e) { var self = this; var item = e.item; var graph = self.graph; self.item = item; if (!self.shouldUpdate(e.item, { event: e, action: 'activate' })) { return; } var activeState = self.activeState; var inactiveState = self.inactiveState; var nodes = graph.getNodes(); var edges = graph.getEdges(); var nodeLength = nodes.length; var edgeLength = edges.length; for (var i = 0; i < nodeLength; i++) { var node = nodes[i]; var hasSelected = node.hasState('selected'); if (self.resetSelected) { if (hasSelected) { graph.setItemState(node, 'selected', false); } } graph.setItemState(node, activeState, false); if (inactiveState) { graph.setItemState(node, inactiveState, true); } } for (var i = 0; i < edgeLength; i++) { var edge = edges[i]; graph.setItemState(edge, activeState, false); if (inactiveState) { graph.setItemState(edge, inactiveState, true); } } if (inactiveState) { graph.setItemState(item, inactiveState, false); } graph.setItemState(item, activeState, true); var rEdges = item.getEdges(); var rEdgeLegnth = rEdges.length; for (var i = 0; i < rEdgeLegnth; i++) { var edge = rEdges[i]; var otherEnd = void 0; if (edge.getSource() === item) { otherEnd = edge.getTarget(); } else { othe --- lib/behavior/click-select.js (bundled) --- "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _util = require("@antv/util"); var _default = { getDefaultCfg: function getDefaultCfg() { return { multiple: true, selectedState: 'selected' }; }, getEvents: function getEvents() { var self = this; return { 'node:tap': 'onClick', 'combo:tap': 'onClick', 'canvas:tap': 'onCanvasClick' }; }, onClick: function onClick(evt) { var self = this; var item = evt.item; if (!item || item.destroyed) { return; } var type = item.getType(); var graph = self.graph, multiple = self.multiple, shouldUpdate = self.shouldUpdate, shouldBegin = self.shouldBegin; if (!shouldBegin.call(self, evt)) { return; } // allow to select multiple nodes but did not press a key || do not allow the select multiple nodes if (!multiple) { var selected = graph.findAllByState(type, self.selectedState); (0, _util.each)(selected, function (combo) { if (combo !== item) { graph.setItemState(combo, self.selectedState, false); } }); } if (item.hasState(self.selectedState)) { if (shouldUpdate.call(self, evt)) { graph.setItemState(item, self.selectedState, false); } var selectedNodes = graph.findAllByState('node', self.selectedState); var selectedCombos = graph.findAllByState('combo', self.selectedState); graph.emit('nodeselectchange', { target: item, selectedItems: { nodes: selectedNodes, combos: selectedCombos }, select: false }); } else { if (shouldUpdate.call(self, evt)) { graph.setItemState(item, self.selectedState, true); } var selectedNodes = graph.findAllByState('node', self.selectedState); var selectedCombos = graph.findAllByState('combo', self.selectedState); graph.emit('nodeselectcha --- lib/behavior/collapse-expand.js (bundled) --- "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var DEFAULT_TRIGGER = 'tap'; var ALLOW_EVENTS = ['tap', 'dbltap']; var _default = { getDefaultCfg: function getDefaultCfg() { return { /** * 发生收缩/扩展变化时的回调 */ trigger: DEFAULT_TRIGGER, onChange: function onChange() {} }; }, getEvents: function getEvents() { var _a; var trigger; // 检测输入是否合法 if (ALLOW_EVENTS.includes(this.trigger)) { trigger = this.trigger; } else { trigger = DEFAULT_TRIGGER; // eslint-disable-next-line no-console console.warn("Behavior collapse-expand 的 trigger 参数不合法,请输入 'click' 或 'dblclick'"); } return _a = {}, _a["node:".concat(trigger)] = 'onNodeTap', // 支持移动端事件 _a.touchstart = 'onNodeTap', _a; }, onNodeTap: function onNodeTap(e) { var item = e.item; // 如果节点进行过更新,model 会进行 merge,直接改 model 就不能改布局,所以需要去改源数据 var sourceData = this.graph.findDataById(item.get('id')); if (!sourceData) { return; } var children = sourceData.children; // 叶子节点的收缩和展开没有意义 if (!children || children.length === 0) { return; } var collapsed = !sourceData.collapsed; if (!this.shouldBegin(e, collapsed)) { return; } sourceData.collapsed = collapsed; item.getModel().collapsed = collapsed; this.graph.emit('itemcollapsed', { item: e.item, collapsed: collapsed }); if (!this.shouldUpdate(e, collapsed)) { return; } try { this.onChange(item, collapsed); } catch (err) { // eslint-disable-next-line no-console console.warn(err); } this.graph.layout(); } }; exports.default = _default; --- lib/behavior/drag-canvas.js (bundled) --- "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _util = _interopRequireDefault(require("../util")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var cloneEvent = _util.default.cloneEvent, isNaN = _util.default.isNaN; var abs = Math.abs; var DRAG_OFFSET = 10; var _default = { getDefaultCfg: function getDefaultCfg() { return { direction: 'both', enableOptimize: false, // drag-canvas 可拖动的扩展范围,默认为 0,即最多可以拖动一屏的位置 // 当设置的值大于 0 时,即拖动可以超过一屏 // 当设置的值小于 0 时,相当于缩小了可拖动范围 // 具体实例可参考:https://gw.alipayobjects.com/mdn/rms_f8c6a0/afts/img/A*IFfoS67_HssAAAAAAAAAAAAAARQnAQ scalableRange: 0, allowDragOnItem: false }; }, getEvents: function getEvents() { return { dragstart: 'onDragStart', drag: 'onDragMove', dragend: 'onDragEnd' }; }, updateViewport: function updateViewport(e) { var origin = this.origin; var clientX = +e.clientX; var clientY = +e.clientY; if (isNaN(clientX) || isNaN(clientY)) { return; } var dx = clientX - origin.x; var dy = clientY - origin.y; if (this.get('direction') === 'x') { dy = 0; } else if (this.get('direction') === 'y') { dx = 0; } this.origin = { x: clientX, y: clientY }; var width = this.graph.get('width'); var height = this.graph.get('height'); var graphCanvasBBox = this.graph.get('canvas').getCanvasBBox(); if (graphCanvasBBox.minX <= width + this.scalableRange && graphCanvasBBox.minX + dx > width + this.scalableRange || graphCanvasBBox.maxX + this.scalableRange >= 0 && graphCanvasBBox.maxX + this.scalableRange + dx < 0) { dx = 0; } if (graphCanvasBBox.minY <= height + this.scalableRange && graphCanvasBBox.minY + dy > height + this.scalableRange || graphCanvasBBox.maxY + this.scalableRange >= 0 && graphCanvasBBox.maxY + this.scalableRange + dy < 0) --- lib/behavior/mobile-behavior.js (bundled) --- "use strict"; O
