New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

dsn-converter

Package Overview
Dependencies
Maintainers
0
Versions
66
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dsn-converter

A TypeScript library for converting between DSN files and Circuit JSON format.

  • 0.0.66
  • latest
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

dsn-converter

A TypeScript library for converting between DSN files and Circuit JSON format.

Overview

dsn-converter is a powerful tool that enables bidirectional conversion between Specctr DSN format and Circuit JSON. This makes it possible to:

  • Parse Specctra DSN files into a workable JSON format
  • Convert Circuit JSON back into KiCad-compatible DSN files
  • Visualize PCB designs using SVG rendering

Installation

# Using bun
bun add dsn-converter

# Using npm
npm install dsn-converter

Usage

Basic Usage

Converting DSN to Circuit JSON
import { parseDsnToCircuitJson } from "dsn-converter"

// Read DSN file
const dsnContent = await Bun.file("your-design.dsn").text()

// Convert to Circuit JSON
const circuitJson = parseDsnToCircuitJson(dsnContent)

// Save the output
await Bun.write("output.circuit.json", JSON.stringify(circuitJson, null, 2))
Converting Circuit JSON to DSN
import { circuitJsonToDsnString } from "dsn-converter"

// Convert Circuit JSON to DSN format
const dsnString = circuitJsonToDsnString(circuitJson)

// Save the DSN file
await Bun.write("output.dsn", dsnString)

Advanced Usage

Working with DSN JSON Directly
import { 
  parseDsnToDsnJson,
  convertDsnJsonToCircuitJson,
  stringifyDsnJson
} from "dsn-converter"

// Parse DSN to intermediate JSON format
const dsnJson = parseDsnToDsnJson(dsnString)

// Modify the DSN JSON structure
dsnJson.placement.components.push({
  name: "NewComponent",
  place: {
    refdes: "U1",
    x: 1000,
    y: 1000,
    side: "front",
    rotation: 0
  }
})

// Convert to Circuit JSON
const circuitJson = convertDsnJsonToCircuitJson(dsnJson)

// Or convert back to DSN string
const modifiedDsnString = stringifyDsnJson(dsnJson)
Custom Component Processing
import { convertCircuitJsonToDsnJson } from "dsn-converter"

// Create Circuit JSON elements
const elements = [
  {
    type: "pcb_smtpad",
    pcb_smtpad_id: "pad1",
    pcb_component_id: "R1",
    shape: "rect",
    x: 0,
    y: 0,
    width: 0.5,
    height: 0.6,
    layer: "top"
  },
  // Add more elements...
]

// Convert to DSN format
const dsnJson = convertCircuitJsonToDsnJson(elements)

Type Support

The library provides comprehensive TypeScript types:

import type { 
  DsnPcb,
  Component,
  Padstack,
  Network,
  Wire
} from "dsn-converter"

// Use types for type-safe DSN manipulation
const component: Component = {
  name: "R1",
  place: {
    refdes: "R1",
    x: 1000,
    y: 1000,
    side: "front",
    rotation: 0
  }
}

Features

  • Complete DSN Support: Handles all major DSN file components including:

    • Component placement
    • PCB layers
    • Traces and wiring
    • Padstacks and SMT pads
    • Net definitions
    • Board boundaries
  • Accurate Conversions: Maintains precise measurements and positions during conversion

  • Type Safety: Full TypeScript support with comprehensive type definitions

Data Structure

DSN Format

The DSN format is represented as a structured JSON with the following main sections:

  • parser: Contains file metadata
  • resolution: Defines measurement units
  • structure: Describes board layers and rules
  • placement: Component positions
  • library: Component and padstack definitions
  • network: Net connections
  • wiring: Trace routing

Circuit JSON

The Circuit JSON format includes:

  • PCB traces
  • SMT pads
  • Component definitions
  • Layer information
  • Routing data

Development

# Install dependencies
bun install

# Run tests
bun test

# Run specific test file
bun test tests/dsn-pcb/parse-dsn-pcb.test.ts

Acknowledgments

  • Built with Bun
  • Uses tscircuit

FAQs

Package last updated on 02 Mar 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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc