
Research
/Security News
9 Malicious NuGet Packages Deliver Time-Delayed Destructive Payloads
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.
babel-helper-decorate-react
Advanced tools
Babel Helper for custom decorator for React Component
export const Button = () => {
return <button>button</button>
}
// decorate-enable-next-line { "argument": 123 }
export default class ButtonDefault extends React.Component {
// ...
}
// decorate-disable-next-line
export class Button2 extends React.Component {
// ...
}
import hoc from '/your/hoc/path'
export const Button = hoc()(() => {
return <button>button</button>
})
// decorate-enable-next-line { "argument": 123 }
export default
@hoc({ argument: 123 })
class ButtonDefault extends React.Component {
// ...
}
// decorate-disable-next-line
export class Button2 extends React.Component {
// ...
}
It's useful for decorate react component for react component, like use mobx-react observer.
babelConfig{
plugins: [
+ 'babel-helper-decorate-react/mobx'
]
}
babel-helper-decorate-react/mobx/decorateconst mobx = require('mobx-react')
module.exports = () => {
return (Component) => {
return mobx.observer(Component)
}
}
Inputexport const Button = () => {
return <button>button</button>
}
/* mobx-observer-disable */
export const ButtonDisable = () => {
return <button>button</button>
}
/* mobx-observer-enable */
export default class ButtonDefault extends React.Component {
// ...
}
import decorate from 'babel-helper-decorate-react/mobx/decorate'
// To be observer component
export const Button = decorate()(() => {
return <button>button</button>
})
export const ButtonDisable = () => {
return <button>button</button>
}
// To be observer component
export default
@decorate()
class ButtonDefault extends React.Component {
// ...
}
npm install babel-helper-decorate-react
# or use yarn
yarn add babel-helper-decorate-react
import babel from '@babel/core'
import createDecorateReactVisitor from 'babel-helper-decorate-react'
babel.transform(code, {
plugins: [
{
visitor: createDecorateReactVisitor({
// ...opts
})
}
]
})
createDecorateReactVisitor(options?)Optionsextends createDecorateVisitor#Options
detectComponentNameShould detect react component name?
App is valid, app is invalid.
booleantruedetectClassComponentShould detect react class component?
booleantruedetectFunctionComponentShould detect react function component?
booleantruereactClassMemberTokensThe MemberExpression or Identifier tokens for Detecting React class component
string[]['React.Profiler', 'React.Suspense', 'React.StrictMode', 'React.Fragment', 'Profiler', 'Suspense', 'StrictMode', 'Fragment']reactClassSuperTokensThe super class tokens for Detecting React class component
string[]['React.Component', 'React.PureComponent', 'Component', 'PureComponent']reactClassCallTokensThe CallExpression tokens for Detecting React class component
string[]['React.createRef', 'React.createFactory', 'React.createElement', 'React.cloneElement', 'createRef', 'createFactory', 'createElement', 'cloneElement']reactClassMethodsTokensThe ClassMethod tokens for Detecting React class component
string[]['componentDidUpdate', 'componentDidCatch', 'componentDidMount', 'componentWillMount', 'componentWillReceiveProps', 'componentWillUnmount', 'componentWillUpdate', 'UNSAFE_componentWillMount', 'UNSAFE_componentWillReceiveProps', 'UNSAFE_componentWillUpdate', 'getSnapshotBeforeUpdate', 'shouldComponentUpdate', 'render']reactFunctionCallTokensThe ClassMethod tokens for Detecting React function component
string[]['React.createRef', 'React.createFactory', 'React.createElement', 'React.cloneElement', 'createRef', 'createFactory', 'createElement', 'cloneElement', 'React.useCallback', 'React.useEffect', 'React.useMemo', 'React.useImperativeHandle', 'React.useLayoutEffect', 'React.useReducer', 'React.useContext', 'React.useState', 'React.useDebugValue', 'React.useRef', 'useCallback', 'useEffect', 'useMemo', 'useImperativeHandle', 'useLayoutEffect', 'useReducer', 'useContext', 'useState', 'useDebugValue', 'useRef']prefixComment prefix for enable or disable decoration like eslint comment
/* decorate-disable */
/* decorate-enable */
// decorate-disable-next-line
// decorate-disable-line
// decorate-enable-next-line
// decorate-enable-line
string'decorate'decorateLibPathThe Path of decoration library.
stringnullmoduleInteropPathYou may not use it.
string | nullrequire.resolve('module-interop')defaultEnableThe decoration's status by default
you can use // decorate-enable-next-line to enable when is disabled by default
booleantruedetectScopeDepthThe visitorType matched scope depth.
-1 means allow any depth.
const Button = () => {
// scope depth: 2
const Inner = () => <button>inner</button>
// scope depth: 1
return <button>123</button>
}
number-1wrapFunctionComponentDecorateTokensshould wrap function component decorator
// Input
const Button = forwardRef(() => {
// scope depth: 1
return <button>123</button>
})
// Output
const Button = decorate()(
forwardRef(() => {
// scope depth: 1
return <button>123</button>
})
)
string[]['forwardRef', 'React.forwardRef']git checkout -b feature-new or git checkout -b fix-which-buggit commit -am 'feat: some description (close #123)' or git commit -am 'fix: some description (fix #123)'git pushThis library is written and maintained by imcuttle, imcuttle@163.com.
MIT - imcuttle 🐟
FAQs
Babel Helper for custom decorator for React Component
The npm package babel-helper-decorate-react receives a total of 1 weekly downloads. As such, babel-helper-decorate-react popularity was classified as not popular.
We found that babel-helper-decorate-react demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.

Security News
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.

Security News
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.