Neurotic Pumpkin Murderer

    caprison
    TypeScript icon, indicating that this package has built-in type declarations

    0.1.1 • Public • Published

    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!)

    Keywords

    none

    Install

    npm i caprison

    DownloadsWeekly Downloads

    5

    Version

    0.1.1

    License

    ISC

    Unpacked Size

    51.2 kB

    Total Files

    12

    Last publish

    Collaborators

    • abeisgreat