Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Typeforce is a runtime type-checking library for JavaScript. It allows developers to enforce types and structures on their data, ensuring that the data conforms to expected formats. This can be particularly useful for validating function arguments, API responses, and more.
Basic Type Checking
Typeforce provides basic type checking for primitive types like strings, numbers, booleans, etc. The example demonstrates how to check if a value is a string.
const typeforce = require('typeforce');
// Define a type check for a string
const isString = typeforce.String;
// Validate a value
console.log(isString('Hello, World!')); // true
console.log(isString(123)); // throws an error
Custom Type Definitions
Typeforce allows you to define custom type checks using functions. The example shows how to create a custom type check for even numbers.
const typeforce = require('typeforce');
// Define a custom type check
const isEvenNumber = typeforce(function(value) {
return typeof value === 'number' && value % 2 === 0;
});
// Validate a value
console.log(isEvenNumber(4)); // true
console.log(isEvenNumber(5)); // throws an error
Object Structure Validation
Typeforce can validate the structure of objects, ensuring that they have the expected properties with the correct types. The example demonstrates how to validate an object representing a person.
const typeforce = require('typeforce');
// Define a type check for an object structure
const personType = {
name: typeforce.String,
age: typeforce.Number
};
// Validate an object
const person = { name: 'Alice', age: 30 };
console.log(typeforce(personType, person)); // true
const invalidPerson = { name: 'Bob', age: 'thirty' };
console.log(typeforce(personType, invalidPerson)); // throws an error
Array Type Checking
Typeforce can validate arrays, ensuring that all elements conform to a specified type. The example shows how to check if an array contains only numbers.
const typeforce = require('typeforce');
// Define a type check for an array of numbers
const isArrayofNumbers = typeforce(typeforce.ArrayOf(typeforce.Number));
// Validate an array
console.log(isArrayofNumbers([1, 2, 3])); // true
console.log(isArrayofNumbers([1, '2', 3])); // throws an error
Joi is a powerful schema description language and data validator for JavaScript. It allows you to create blueprints or schemas for JavaScript objects to ensure validation of key information. Compared to Typeforce, Joi offers a more extensive and flexible API for defining complex validation rules and is widely used in the Node.js community.
Yup is a JavaScript schema builder for value parsing and validation. It is similar to Joi but is often preferred for its simplicity and ease of use, especially in React applications. Yup provides a fluent API for object schema validation and is highly customizable.
Prop-types is a runtime type-checking library for React props. It allows you to specify the types of props that a component should receive, providing warnings in development mode if the props do not match the specified types. While it is more specialized for React, it offers similar type-checking capabilities as Typeforce.
Another biased type checking solution for Javascript.
var typeforce = require('typeforce')
var unknown = [{ prop: 'foo' }, { prop: 'bar' }, { prop: 2 } ]
typeforce('Array', unknown)
// supported primitives 'Array', 'Boolean', 'Buffer', 'Number', 'Object', 'String'
// array types only support 1 element type
typeforce(['Object'], unknown)
// pop the last element
var element = unknown.pop()
// supports recursive type templating
typeforce({ prop: 'Number' }, element)
// works for array types too (remember, we popped off the non-conforming element)
typeforce([{ prop: 'String' }], unknown)
// will also pass as an Array is an Object
typeforce('Object', unknown)
// THROWS 'TypeError: Expected Number, got Array [object Object],[object Object]'
typeforce('Number', unknown)
This library is free and open-source software released under the MIT license.
FAQs
Another biased type checking solution for Javascript
The npm package typeforce receives a total of 227,609 weekly downloads. As such, typeforce popularity was classified as popular.
We found that typeforce 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
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.