New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

@codeperate/json-schema-builder

Package Overview
Dependencies
Maintainers
2
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@codeperate/json-schema-builder

A powerful TypeScript library for building, manipulating, and transforming JSON schemas with a fluent API.

latest
Source
npmnpm
Version
1.0.11
Version published
Weekly downloads
2
-77.78%
Maintainers
2
Weekly downloads
 
Created
Source

JSON Schema Builder

A powerful TypeScript library for building, manipulating, and transforming JSON schemas with a fluent API.

Features

  • 🛠️ Fluent API for schema manipulation
  • 🔄 Pick and omit properties from schemas
  • ⚡ Dynamic property updates
  • 🔒 Required/optional property management
  • 📦 Array schema conversion
  • 🔄 Reference removal
  • 🧬 Type-safe operations

Installation

npm install @codeperate/json-schema-builder

Quick Start

import { schemaBuilder } from '@codeperate/json-schema-builder';

// Create a schema
const schema = {
  type: 'object',
  properties: {
    name: { type: 'string' },
    age: { type: 'integer' },
    email: { type: 'string' },
    address: {
      type: 'object',
      properties: {
        street: { type: 'string' },
        city: { type: 'string' },
      },
      required: ['street', 'city'],
    },
  },
  required: ['name', 'age', 'email', 'address'],
};

// Use the builder to transform the schema
const updatedSchema = schemaBuilder(schema).pick(['name', 'email']).schema;

console.log(updatedSchema);

API Reference

Core Methods

schemaBuilder(schema: JSONSchema)

Creates a new SchemaBuilder instance.

Property Selection

  • pick(props: (keyof T)[] | RegExp, options?: { removeRequired?: boolean }): SchemaBuilder<T>

    • Select specific properties from the schema
    • Optionally remove required properties
  • omit(props: (keyof T)[] | RegExp, options?: { removeRequired?: boolean }): SchemaBuilder<T>

    • Remove specific properties from the schema
    • Optionally remove required properties

Property Management

  • optional(props: (keyof T)[]): SchemaBuilder<T>

    • Make specified properties optional
  • required(props: (keyof T)[]): SchemaBuilder<T>

    • Make specified properties required

Schema Manipulation

  • set<K extends keyof JSONSchema>(key: K, value: JSONSchema[K] | ((curVal: JSONSchema[K]) => JSONSchema[K])): SchemaBuilder<T>

    • Set a schema property directly
  • setProps<K extends keyof T, V extends JSONSchema>(key: K, value: V | ((curVal: JSONSchema) => V)): SchemaBuilder<Omit<T, K> & { [key in K]: FromSchema<V> }>

    • Set a property with type safety
  • setPropsRaw<K extends keyof T, V = any>(key: K, value: JSONSchema | ((curVal: JSONSchema) => JSONSchema)): SchemaBuilder<Omit<T, K> & { [key in K]: V }>

    • Set a property without type constraints

Utility Methods

  • clone(): SchemaBuilder<T>

    • Create a deep copy of the current schema
  • toArray(): SchemaBuilder<Array<T>>

    • Convert the schema to an array schema
  • noRef(options?: { removeRequired?: boolean }): SchemaBuilder<T>

    • Remove all references from the schema

Examples

Picking Properties

const schema = schemaBuilder(originalSchema).pick(['name', 'email']).schema;

Making Properties Optional

const schema = schemaBuilder(originalSchema).optional(['age', 'address']).schema;

Converting to Array

const arraySchema = schemaBuilder(originalSchema).toArray().schema;

Removing References

const cleanSchema = schemaBuilder(originalSchema).noRef().schema;

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

FAQs

Package last updated on 15 May 2025

Did you know?

Socket

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.

Install

Related posts