Socket
Socket
Sign inDemoInstall

caprison

Package Overview
Dependencies
0
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

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.


Version published
Maintainers
1
Install size
50.8 kB
Created

Readme

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

Last updated on 22 Dec 2020

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc