// npm 패키지
reducs
A sane implementation of Redux
버전
5
메인테이너
1
라이선스
GPL
최초 publish
2018-04-01
publisher
mercmobily
tarball
970 B
AUTO-PUBLISHED·1개 버전 인덱싱됨·최근 publish: 2019-10-27
// publisher 캠페인by mercmobily
이 계정에서 catch된 패키지 2건고립된 catch가 아닙니다. 동일 publisher가 1개의 다른 패키지를 추가로 발행했고, 모두 파이프라인이 catch했습니다 — 일회성이 아닌 조직적 캠페인의 형태. 아래 링크는 각 형제 catch의 분석으로 이동합니다.
// offending code· @1.0.1· no static-pattern hits
llm: benign · 0.85→ 의심 전송지 없음, 원격 실행 형태 없음 — 2 known-vendor host(s).
- @1.0.1··AUTO-PUBLISHED·publisher: mercmobilyheuristic 87/100static flags 0llm benign (0.85) via ollamarecent-owner-changetypo-match:redux:d2publisher-multi-name-burst:38publisher-version-pump:39dormant-takeover:prev=iman@1.0.0
→ 의심 전송지 없음, 원격 실행 형태 없음 — 2 known-vendor host(s).
// offending code· no static-pattern hits
--- package.json (entry) --- { "name": "reducs", "author": "Tony Mobily", "description": "", "license": "ISC", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "version": "1.0.1" } --- index.js (entry) --- let state = null const beforeSetStateCallbacks = [] const afterSetStateCallbacks = [] export const beforeSetState = (fn) => beforeSetStateCallbacks.push(fn) export const afterSetState = (fn) => afterSetStateCallbacks.push(fn) export const setState = async (key, value) => { if (state === null) state = {} for (const fn of beforeSetStateCallbacks) await fn(key, value) if (typeof value === 'object' && value !== null) { if (Array.isArray(value)) state[key] = [...value] else state[key] = { ...value } } else { state[key] = value } for (const fn of afterSetStateCallbacks) await fn(key, value) } export const stateEmpty = () => { return !state } export const getState = (key) => { if (!state) return null return state[key] }
