// npm 패키지
@antv/dipper-component
## Getting Started
버전
3
메인테이너
51
라이선스
MIT
최초 publish
2021-10-27
publisher
lzxue
tarball
133,113 B
AUTO-PUBLISHED·1개 버전 인덱싱됨·최근 publish: 2021-11-03
// publisher 캠페인by lzxue
이 계정에서 catch된 패키지 9건고립된 catch가 아닙니다. 동일 publisher가 8개의 다른 패키지를 추가로 발행했고, 모두 파이프라인이 catch했습니다 — 일회성이 아닌 조직적 캠페인의 형태. 아래 링크는 각 형제 catch의 분석으로 이동합니다.
// offending code· @0.0.4· 1 file flagged
llm: benign · 0.85→ 의심 전송지 없음, 원격 실행 형태 없음 — 3 known-vendor host(s).
- @0.0.4··AUTO-PUBLISHED·publisher: lzxueheuristic 75/100static flags 1llm benign (0.85) via ollamaosv-flagged:MAL-2026-3870install-path-npm-publish
→ 의심 전송지 없음, 원격 실행 형태 없음 — 3 known-vendor host(s).
// offending code· 1 file flaggedpatterns: 1
--- package/package.json (excerpt) --- { "name": "@antv/dipper-component", "version": "0.0.4", "scripts": { "clean": "rimraf dist", "start": "dumi dev", "docs:build": "dumi build", "docs:deploy": "gh-pages -d docs-dist", "build": "father-build", "deploy": "npm run docs:build && npm run docs:deploy", "release": "npm run build && npm publish", "prettier": "prettier --write \"src/**/*.{js,jsx,tsx,ts,less,md,json}\"", "test": "umi-test", "sync": "tnpm sync", "test:coverage": "umi-test --coverage" }, "main": "dist/index.js", "module": "dist/index.esm.js", "typings": "dist/index.d.ts", "gitHooks": { "pre-commit": "lint-staged" }, "lint-staged": { "*.{js,jsx,less,md,json}": [ "prettier --write" ], "*.ts?(x)": [ "prettier --parser=typescript --write" ] }, "dependencies": { "@antv/dipper-core": "^0.0.4", "classnames": "^2.3.1", "inversify": "^6.0.1", "inversify-react": "^1.0.0" }, "devDependencies": { "@umijs/test": "^3.0.5", "dumi": "^1.0.17", "father-build": "^1.17.2", "gh-pages": "^3.0.0", "lint-staged": "^10.0.7", "prettier": "^2.2.1", "yorkie": "^2.0.0" }, "peerDependencies": { "@ant-design/icons": "^4.7.0", "@antv/l7": "^2.5.40", "@antv/l7-maps": "^2.5.40", "antd": "^4.16.13", "react": "^16.14.0", "react-dom": "^16.8.6" }, "publishConfig": { "access": "public" }, "license": "MIT", "gitHead": "a146ad52020cf06899f6c7c2c0009fad3adf9e --- bundled output (OSV-MAL flagged — LLM scope expansion) --- --- dist/index.d.ts (bundled) --- export { default as DipperContainer } from './AppContainer'; export { default as AppToolbar } from './AppToolbar'; export { default as AppSiderBar } from './AppPanel'; export { default as AppMap } from './AppMap'; export { default as AppControl } from './AppControl'; export { default as AppHeader } from './AppHeader'; export { default as AppLayer } from './AppLayer'; export { default as AppIcon } from './AppIcon'; export * from './AppTemplate'; export * from './hooks'; export * from './utils'; --- dist/index.esm.js (bundled) --- import React, { useState as useState$1, useEffect as useEffect$1, useCallback, useContext, createContext, useRef, createElement, PureComponent, useMemo } from 'react'; import { Tabs, Layout } from 'antd'; import { useInjection, Provider } from 'inversify-react'; import { TYPES, ConfigEventEnum, LayerEventEnum, LayerGroupEventEnum, SceneContainer as SceneContainer$1, getWidget } from '@antv/dipper-core'; import { Scene, Layers, Logo, Zoom, Scale, Control as Control$1, Popup } from '@antv/l7'; import { GaodeMap } from '@antv/l7-maps'; import { createPortal } from 'react-dom'; import * as antdIcon from '@ant-design/icons'; import { RightOutlined } from '@ant-design/icons'; import classNames from 'classnames'; function styleInject(css, ref) { if ( ref === void 0 ) ref = {}; var insertAt = ref.insertAt; if (!css || typeof document === 'undefined') { return; } var head = document.head || document.getElementsByTagName('head')[0]; var style = document.createElement('style'); style.type = 'text/css'; if (insertAt === 'top') { if (head.firstChild) { head.insertBefore(style, head.firstChild); } else { head.appendChild(style); } } else { head.appendChild(style); } if (style.styleSheet) { style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); } } var css_248z = ".pageMap {\n width: 100%;\n height: 100%;\n}\n.pageMap :global .ant-layout-content {\n position: relative;\n display: flex;\n height: 100%;\n}\n"; styleInject(css_248z); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread2(target) { for (var i = 1; i < ar --- dist/index.js (bundled) --- 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); var antd = require('antd'); var inversifyReact = require('inversify-react'); var dipperCore = require('@antv/dipper-core'); var l7 = require('@antv/l7'); var l7Maps = require('@antv/l7-maps'); var reactDom = require('react-dom'); var antdIcon = require('@ant-design/icons'); var classNames = require('classnames'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n['default'] = e; return Object.freeze(n); } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var antdIcon__namespace = /*#__PURE__*/_interopNamespace(antdIcon); var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames); function styleInject(css, ref) { if ( ref === void 0 ) ref = {}; var insertAt = ref.insertAt; if (!css || typeof document === 'undefined') { return; } var head = document.head || document.getElementsByTagName('head')[0]; var style = document.createElement('style'); style.type = 'text/css'; if (insertAt === 'top') { if (head.firstChild) { head.insertBefore(style, head.firstChild); } else { head.appendChild(style); } } else { head.appendChild(style); } if (style.styleSheet) { style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); } } var css_248z = ".pageMap {\n width: 100%;\n height: 100%;\n}\n.pageMap :global .ant-layout-content {\n position: relative;\n display: flex;\n height --- dist/utils/common.d.ts (bundled) --- export declare function getEnv(url: string): "dev" | "pre" | "prod"; export declare function updateQueryStringParameter(uri: string, key: string, value: string): string; --- dist/utils/const.d.ts (bundled) --- export declare const SERVICE_URL: { dev: string; pre: string; prod: string; }; export declare const ScatterColorScale: string[]; --- dist/utils/index.d.ts (bundled) --- export * from './ui'; --- dist/utils/theme.d.ts (bundled) --- declare const theme: { fill: { color: { normal: string; hoveer: string; click: string; }; }; }; export { theme }; --- dist/utils/ui.d.ts (bundled) --- import { IWidgetProps } from '@antv/dipper-core'; export declare const isDisplay: (display?: any) => boolean; declare type Position = 'left' | 'right' | 'center'; export declare const getAppContentItem: (items: IWidgetProps<any>, position: Position) => IWidgetProps<any>[]; export declare const findItem: (items: IWidgetProps<any>, position: Position) => IWidgetProps<any> | undefined; export {}; --- dist/hooks/index.d.ts (bundled) --- export * from './useConfigService'; export * from './useLayerGroup'; export * from './useSceneService'; export * from './useLayerService'; export * from './useSceneContainer'; export * from './usePanelService'; --- dist/hooks/useConfigService.d.ts (bundled) --- import { IConfigService, IConfig } from '@antv/dipper-core'; export declare function useConfigService<T>(): { globalConfig: Partial<IConfig<T>>; setConfig: (field: string, value: any) => void; updateLegend: (id: string, value: any) => void; updateControl: (type: string, value: any) => void; setWidgetsOptions: (key: string, options: Record<string, any>) => void; getWidgetsOptions: (key: string) => Record<string, any>; setWidgetsValue: (key: string, options: Record<string, any>) => void; getWidgetsValue: (key: string) => Record<string, any>; configService: IConfigService<T>; }; --- dist/hooks/useLayerGroup.d.ts (bundled) --- import type { ILayerGroup } from '@antv/dipper-core'; import type { Feature } from '@turf/turf'; export declare function useLayerGroup(name: string): { currentGroup: ILayerGroup | undefined; updateProperties: (feature: Feature, properties: Record<string, any>) => void; selectFeatures: Feature<import("@turf/turf").Geometry | import("@turf/turf").GeometryCollection, import("@turf/turf").Properties>[]; hoverFeature: Feature<import("@turf/turf").Geometry | import("@turf/turf").GeometryCollection, import("@turf/turf").Properties> | null; }; --- dist/hooks/useLayerService.d.ts (bundled) --- import type { ILayerService } from '@antv/dipper-core'; export declare function useLayerService(): { layerService: ILayerService; }; --- dist/hooks/usePanelService.d.ts (bundled) --- import type { IPanelService } from '@antv/dipper-core'; export declare function usePanelService(): { siderBarService: IPanelService; }; --- dist/hooks/useReferredState.d.ts (bundled) --- import React from 'react'; export default function useReferredState<T>(initialValue?: T): (React.MutableRefObject<T | undefined> | ((value: T) => void))[]; --- dist/hooks/useSceneContainer.d.ts (bundled) --- import { SceneContainer } from '@antv/dipper-core'; import ty
