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

caprison

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

caprison

CapriSON is an object notation standard which pulls together parts of JSON, Protobufs, Flatpak, and CSVs.

  • 0.1.1
  • latest
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

CapriSON

CapriSON is an object notation standard which pulls together parts of JSON, Protobufs, Flatpak, and CSVs. This standard minimizes bytes over the wire by using a template (stored in your app, similar to a proto) for each object type while still transmitting the data as human-readable text.

// JSON Serialization (140b gzip'd)
const myJsonData = {
  "position": '100x200',
  "angle": 23,
  "label": "Account",
  "dimensions": {
    "radius": 23,
  },
  "children": [
    { "name": 'freddy', "age": 19 },
    { "name": 'scooby', "age": 72 },
    { "name": 'shaggy', "age": 11 },
  ],
}

// CapriSON Serialization (72b gzip'd)
const myCapriSONData = "23,3,19,freddy,72,scooby,11,shaggy,23,circle,100x200"

How it works

Before deploying your app, use CapriSON.templatify to transform any JSON payload into a template. This template is then used to parse any data sent from the server.

// Creating the template (Performed in your build step)
const template = CapriSON.templatify(myJsonData);
expect(template).to.deep.equal({
  position: 'string',
  angle: 'number',
  label: 'string',
  diameter: {
    radius: 'number',
  },
  children: [
    {
      name: 'string',
      age: 'number',
    },
  ],
});

This template (or any other) is then passed to CapriSON.parse during runtime.

// Using the template (Performed at runtime)
const result = CapriSON.parse(template, myCapriSONData)
expect(result).to.deep.equal(myJsonData);

At this point your original data with all hierarchy and ordering retained.

Pros vs Cons

Pros

  • Relatively efficient data packing
  • Human-readable / debuggable
  • Typescript support
  • Potential for schema checking / enforcement
  • Potential for constant-time value look-ups

Cons

  • Arrays must have children with the same keys
  • Not as efficient as Flatpak or Protobufs (it's still text!)

FAQs

Package last updated on 22 Dec 2020

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