
Security News
AI Agent Lands PRs in Major OSS Projects, Targets Maintainers via Cold Outreach
An AI agent is merging PRs into major OSS projects and cold-emailing maintainers to drum up more work.
ipld-schema-validator
Advanced tools
Build fast and strict JavaScript object form validators using IPLD Schemas.
import { parse as parseSchema } from 'ipld-schema'
import { create as createValidator } from 'ipld-schema-validator'
// Build an IPLD Schema from the text form
const schemaText = `
type FooBarBazStruct struct {
bim Int
bam String
boom Bool
} representation tuple
type MyList [Int]
type MyStruct struct {
foo FooBarBazStruct
bar MyList
baz String
}
`
// Compile it to its object descriptor form which SchemaValidator consumes
const schemaDescriptor = parseSchema(schemaText)
// Create a validator function from the Schema descriptor, with 'MyStruct' as the
// root type to inspect
const myStructValidator = createValidator(schemaDescriptor, 'MyStruct')
// An object that matches our schema
const obj = {
foo: [1, 'one', true],
bar: [1, 2, 3, 4],
baz: 'baz'
}
console.log('Validating object as MyStruct:', myStructValidator(obj)) // true
obj.boop = true // modify the object, adding an additional property not defined by the schema
console.log('Validating modified object as MyStruct:', myStructValidator(obj)) // false
// Make another validator function but use the 'MyList' (`[Int]`) type as the root
const myListValidator = createValidator(schemaDescriptor, 'MyList')
console.log('Validating [1, 2, 3] as MyStruct:', myListValidator([1, 2, 3])) // true
console.log('Validating object as MyStruct:', myListValidator(obj)) // false
console.log('Validating [1, \'one\', true] as MyStruct:', myListValidator([1, 'one', true])) // false
console.log('Validating {} as MyStruct:', myListValidator({})) // false
Note that ipld-schema is needed to if you want to use the human-readable Schema text form. ipld-schema-validator consumes the object descriptor form, it is not recommended that you craft this form by hand.
Currently ipld-schema-validator supports the full IPLD Schema specification except for the following:
stringpairs representationstringpairs representationstringjoin representationUnfortunately, in JavaScript, an "integer" is really just a floating point number with a 0 after the decimal point (all numbers in JavaScript are IEEE754 double-precision floats). So we have no clean way to say whether a number is strictly an integer and not a "float" in terms of the IPLD Data Model.
This library takes the following approach:
Number.isInteger() test.Infinity or -Infinity.Therefore, it is possible for the same number to pass as both an int and a float IPLD kind.
Copyright 2020 Rod Vagg
Licensed under Apache 2.0 (LICENSE-APACHE / http://www.apache.org/licenses/LICENSE-2.0)
FAQs
IPLD Schema Validator
We found that ipld-schema-validator 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.

Security News
An AI agent is merging PRs into major OSS projects and cold-emailing maintainers to drum up more work.

Research
/Security News
Chrome extension CL Suite by @CLMasters neutralizes 2FA for Facebook and Meta Business accounts while exfiltrating Business Manager contact and analytics data.

Security News
After Matplotlib rejected an AI-written PR, the agent fired back with a blog post, igniting debate over AI contributions and maintainer burden.