// npm 패키지
@antv/f-engine
FEngine 是 AntV F 系列可视化引擎的底层渲染引擎,为移动端提供了一套完整的渲染、事件、动画能力,能方便的构建可视化 UI
버전
83
메인테이너
51
최초 publish
2022-05-27
publisher
xuying1027
tarball
2,107,859 B
AUTO-PUBLISHED·1개 버전 인덱싱됨·최근 publish: 2026-01-21
// publisher 캠페인by xuying1027
이 계정에서 catch된 패키지 6건고립된 catch가 아닙니다. 동일 publisher가 5개의 다른 패키지를 추가로 발행했고, 모두 파이프라인이 catch했습니다 — 일회성이 아닌 조직적 캠페인의 형태. 아래 링크는 각 형제 catch의 분석으로 이동합니다.
// offending code· @1.10.0· 1 file flagged
llm: benign · 0.85→ 의심 전송지 없음, 원격 실행 형태 없음 — 1 known-vendor host(s).
- @1.10.0··AUTO-PUBLISHED·publisher: xuying1027heuristic 75/100static flags 1llm benign (0.85) via ollamamature-packageosv-flagged:MAL-2026-3882reads-env-vars
→ 의심 전송지 없음, 원격 실행 형태 없음 — 1 known-vendor host(s).
// offending code· 1 file flaggedpatterns: 1
--- package/.fatherrc.js (excerpt) --- export default process.env.CI && process.env.CI === 'true' ? {} : { umd: { name: 'FEngine', file: 'index', // minFile: true, }, entry: ['src/index.ts', 'src/jsx/jsx-runtime.ts'], overridesByEntry: { 'src/index.ts': { umd: { name: 'FEngine', file: 'index' }, }, // for weixin miniapp 'src/jsx/jsx-runtime.ts': { umd: { name: 'FJSXRuntime', file: 'jsx-runtime' }, }, }, }; --- package.json (entry) --- { "name": "@antv/f-engine", "version": "1.10.0", "main": "lib/index.js", "module": "es/index.js", "types": "es/index.d.ts", "miniprogram": "dist", "sideEffects": false, "dependencies": { "@antv/g-gesture": "~2.2.0", "@antv/g-lite": "~1.2.0", "@antv/g-mobile-canvas": "~0.11.0", "@antv/g-mobile-canvas-element": "~0.8.0", "@antv/g-mobile-svg": "~0.10.0", "@antv/g-mobile-webgl": "~0.9.0", "@antv/g-web-animations-api": "~1.2.0", "@antv/util": "^3.0.6", "@babel/runtime": "^7.12.5", "eventemitter3": "^4.0.0", "tslib": "^2.3.1" }, "devDependencies": { "@antv/f-test-utils": "1.0.9" }, "homepage": "https://github.com/antvis/FEngine", "author": "https://github.com/orgs/antvis/people", "repository": { "type": "git", "url": "https://github.com/antvis/FEngine" }, "bugs": { "url": "https://github.com/antvis/FEngine/issues" }, "gitHead": "5bb6d8fc1e435eefbe4576a44fb427d3b909b0b5" } --- index.js (entry) --- "use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "Canvas", { enumerable: true, get: function get() { return _canvas.default; } }); Object.defineProperty(exports, "CanvasRenderer", { enumerable: true, get: function get() { return _gMobileCanvas.Renderer; } }); Object.defineProperty(exports, "Children", { enumerable: true, get: function get() { return _children.default; } }); Object.defineProperty(exports, "Component", { enumerable: true, get: function get() { return _component.default; } }); Object.defineProperty(exports, "Fragment", { enumerable: true, get: function get() { return _jsx.Fragment; } }); Object.defineProperty(exports, "Gesture", { enumerable: true, get: function get() { return _gesture.default; } }); Object.defineProperty(exports, "Player", { enumerable: true, get: function get() { return _player.default; } }); exports.Smooth = void 0; Object.defineProperty(exports, "Timeline", { enumerable: true, --- bundled output (OSV-MAL flagged — LLM scope expansion) --- --- jsx-dev-runtime.js (bundled) --- export * from './jsx-runtime'; --- jsx-runtime.js (bundled) --- export * from './es/jsx/jsx-runtime'; --- lib/jsx/jsx-automatic.js (bundled) --- "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.jsx = jsx; var _tslib = require("tslib"); // 实现jsx-automatic 入口 function jsx(type, config, key) { var _a = config || {}, ref = _a.ref, props = (0, _tslib.__rest)(_a, ["ref"]); // Resolve default props // This is a simplified version of the React's defaultProps resolution. // See https://github.com/facebook/react/blob/main/packages/react/src/jsx/ReactJSXElement.js if (typeof type === 'function' && type['defaultProps']) { var defaultProps = type['defaultProps']; for (var propName in defaultProps) { if (props[propName] === undefined) { props[propName] = defaultProps[propName]; } } } return { key: key, ref: ref, type: type, props: props }; } --- lib/jsx/jsx-classic.js (bundled) --- "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.jsx = jsx; var _tslib = require("tslib"); // 实现jsx-classic 入口 function jsx(type, config) { var children = []; for (var _i = 2; _i < arguments.length; _i++) { children[_i - 2] = arguments[_i]; } var _a = config || {}, key = _a.key, ref = _a.ref, props = (0, _tslib.__rest)(_a, ["key", "ref"]); // 保持和automatic模式一致 if (children.length) { props.children = children.length === 1 ? children[0] : children; } // Resolve default props // This is a simplified version of the React's defaultProps resolution. // See https://github.com/facebook/react/blob/main/packages/react/src/jsx/ReactJSXElement.js if (typeof type === 'function' && type['defaultProps']) { var defaultProps = type['defaultProps']; for (var propName in defaultProps) { if (props[propName] === undefined) { props[propName] = defaultProps[propName]; } } } return { key: key, ref: ref, type: type, props: props }; } --- lib/jsx/jsx-runtime.js (bundled) --- "use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "Fragment", { enumerable: true, get: function get() { return _fragment.default; } }); Object.defineProperty(exports, "jsx", { enumerable: true, get: function get() { return _jsxAutomatic.jsx; } }); Object.defineProperty(exports, "jsxDEV", { enumerable: true, get: function get() { return _jsxAutomatic.jsx; } }); Object.defineProperty(exports, "jsxs", { enumerable: true, get: function get() { return _jsxAutomatic.jsx; } }); var _jsxAutomatic = require("./jsx-automatic"); var _fragment = _interopRequireDefault(require("./fragment")); --- lib/canvas/render/css-layout.js (bundled) --- "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; /* eslint-disable */ // @ts-nocheck // from css-layout var CSS_UNDEFINED; var CSS_DIRECTION_INHERIT = 'inherit'; var CSS_DIRECTION_LTR = 'ltr'; var CSS_DIRECTION_RTL = 'rtl'; var CSS_FLEX_DIRECTION_ROW = 'row'; var CSS_FLEX_DIRECTION_ROW_REVERSE = 'row-reverse'; var CSS_FLEX_DIRECTION_COLUMN = 'column'; var CSS_FLEX_DIRECTION_COLUMN_REVERSE = 'column-reverse'; var CSS_JUSTIFY_FLEX_START = 'flex-start'; var CSS_JUSTIFY_CENTER = 'center'; var CSS_JUSTIFY_FLEX_END = 'flex-end'; var CSS_JUSTIFY_SPACE_BETWEEN = 'space-between'; var CSS_JUSTIFY_SPACE_AROUND = 'space-around'; var CSS_ALIGN_FLEX_START = 'flex-start'; var CSS_ALIGN_CENTER = 'center'; var CSS_ALIGN_FLEX_END = 'flex-end'; var CSS_ALIGN_STRETCH = 'stretch'; var CSS_POSITION_RELATIVE = 'relative'; var CSS_POSITION_ABSOLUTE = 'absolute'; var leading = { row: 'left', 'row-reverse': 'right', column: 'top', 'column-reverse': 'bottom' }; var trailing = { row: 'right', 'row-reverse': 'left', column: 'bottom', 'column-reverse': 'top' }; var pos = { row: 'left', 'row-reverse': 'right', column: 'top', 'column-reverse': 'bottom' }; var dim = { row: 'width', 'row-reverse': 'width', column: 'height', 'column-reverse': 'height' }; // When transpiled to Java / C the node type has layout, children and style // properties. For the JavaScript version this function adds these properties // if they don't already exist. function fillNodes(node) { if (!node.layout || node.isDirty) { node.layout = { width: undefined, height: undefined, top: 0, left: 0, right: 0, bottom: 0 }; } if (!node.style) { node.style = {}; } if (!node.children) { node.children = []; } node.children.forEach(fillNodes); return node; } function isUndefined(value) { return value === undefined; } function isRowDirection(flexDirection) { return flexDirection == --- es/jsx/jsx-automatic.js (bundled) --- import { __rest } from "tslib"; // 实现jsx-automatic 入口 export function jsx(type, config, key) { var _a = config || {}, ref = _a.ref, props = __rest(_a, ["ref"]); // Resolve default props // This is a simplified version of the React's defaultProps resolution. // See https://github.com/facebook/react/blob/main/packages/react/src/jsx/ReactJSXElement.js if (typeof type === 'function' && type['defaultProps']) { var defaultProps = type['defaultProps']; for (var propName in defaultProps) { if (props[propName] === undefined) { props[propName] = defaultProps[propName]; } } } return { key: key, ref: ref, type: type, props: props }; } --- es/jsx/jsx-classic.js (bundled) --- import { __rest } from "tslib"; // 实现jsx-classic 入口 export function jsx(type, config) { var children = []; for (var _i = 2; _i < arguments.length; _i++) { children[_i - 2] = arguments[_i]; } var _a = config || {}, key = _a.key, ref = _a.ref, props = __rest(_a, ["key", "ref"]); // 保持和automatic模式一致 if (children.length) { props.children = children.length === 1 ? children[0] : children; } // Resolve default props // This is a simplified version of the React's defaultProps resolution. // See https://github.com/facebook/react/blob/main/packages/react/src/jsx/ReactJSXElement.js if (typeof type === 'function' && type['defaultProps']) { var defaultProps = type['defaultProps']; for (var propName in defaultProps) { if (props[propName] === undefined) { props[propName] = defaultProps[propName]; } } } return { key: key, ref: ref, type: type, props: props }; } --- es/jsx/jsx-runtime.js (bundled) --- import { jsx } from './jsx-automatic'; import Fragment from './fragment'; export { Fragment, jsx, jsx as jsxs, jsx as jsxDEV };
