
Research
Security News
Malicious PyPI Package Exploits Deezer API for Coordinated Music Piracy
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
deku-prop-types
Advanced tools
Prop type validation for Deku components
npm install --save deku-prop-types
Note: propType validations are not performed in production environments
function-component.jsx
import {element} from 'deku'
import {propTypes, validate} from 'deku-prop-types'
const Counter = ({props}) => <div>{props.count}</div>
Count.propTypes = {
count: propTypes.number.isRequired
}
export default validate(Counter)
object-component.jsx
import {element} from 'deku'
import {propTypes, validate} from 'deku-prop-types'
const Counter = {
propTypes: {
count: propTypes.number.isRequired
},
render({props}) {
return <div>{props.count}</div>
}
}
export default validate(Counter)
Validate prop is of any type (not undefined)
Validate prop is an array
Validate prop is an array consisting of a type
import {element} from 'deku'
import {propTypes, validate} from 'deku-prop-types'
const NamesList = ({props}) => <div>
{props.names.map(name => <div>{name}</div>)}
</div>
NamesList.propTypes = {
names: propTypes.arrayOf(propTypes.string)
}
export default validate(NamesList)
Validate prop is a boolean
Validate prop is a function
Validate prop is an instance of a function or class
import {element} from 'deku'
import {propTypes, validate} from 'deku-prop-types'
const ItemList ({props}) => <div>
{props.list.map(item => <div>{item}</div>)}
</div>
ItemList.propTypes = {
list: propTypes.instanceOf(Array)
}
export default validate(ItemList)
Validate prop is a number
Validate prop is an object
Validate prop has keys all matching an allowed type
import {element} from 'deku'
import {propTypes, validate} from 'deku-prop-types'
const NameCard = ({props}) => <div>{props.person.firstName + ' ' + props.person.lastName}</div>
NameCard.propTypes = {
person: propTypes.objectOf(propTypes.string)
}
export default validate(NameCard)
Validate prop is one of the allowed values
import {element} from 'deku'
import {propTypes, validate} from 'deku-prop-types'
const Color = ({props}) => <div>{props.color}</div>
Color.propTypes = {
color: propTypes.oneOf(['red', 'green', 'blue'])
}
export default validate(Color)
Validate prop is one of the allowed types
import {element} from 'deku'
import {propTypes, validate} from 'deku-prop-types'
const Age = ({props}) => <div>{props.age}</div>
Age.propTypes = {
age: propTypes.oneOfType([propTypes.number, propTypes.number])
}
export default validate(Age)
Validate an object's properties are of a certain type
import {element} from 'deku'
import {propTypes, validate} from 'deku-prop-types'
const ConfigDisplay = ({props}) => <div>{props.config.port + ' ' + props.config.host}</div>
ConfigDisplay.propTypes = {
config: propTypes.shape({
host: propTypes.string,
port: propTypes.number
})
}
export default validate(ConfigDisplay)
Validate prop is a string
Note: all propTypes can be required by specifying isRequired
like below:
propTypes.number.isRequired
A function may be passed instead of a propType.
import {element} from 'deku'
import {validate} from 'deku-prop-types'
const Counter = ({props}) => <div>{props.count}</div>
Counter.propTypes = {
count(props, propName) {
if (props[propName] < 10) {
return new Error('count must be less than 10')
}
return null
}
}
export default validate(Counter)
type: function
| object
Validate props passed to component match the specified type. An Error
is thrown if a prop is not valid.
MIT © Dustin Specker
FAQs
Prop type validation for Deku components
The npm package deku-prop-types receives a total of 1 weekly downloads. As such, deku-prop-types popularity was classified as not popular.
We found that deku-prop-types 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 uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.
Security News
Newly introduced telemetry in devenv 1.4 sparked a backlash over privacy concerns, leading to the removal of its AI-powered feature after strong community pushback.