Nonstop Progressive Marxism

    moddle
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/moddle package

    6.2.0 • Public • Published

    moddle

    CI

    A utility library for working with meta-model based data structures.

    What is it good for?

    moddle offers you a concise way to define meta models in JavaScript. You can use these models to consume documents, create model elements and perform model validation.

    A moddle description is a simple JSON file that describes types, their properties and relationships:

    {
      "name": "Cars",
      "uri": "http://cars",
      "prefix": "c",
      "types": [
        {
          "name": "Base",
          "properties": [
            { "name": "id", "type": "String", "isAttr": true }
          ]
        },
        {
          "name": "Root",
          "superClass": [ "Base" ],
          "properties": [
            { "name": "cars", "type": "Car", "isMany": true }
          ]
        },
        {
          "name": "Car",
          "superClass": [ "Base" ],
          "properties": [
            { "name": "name", "type": "String", "isAttr": true, "default": "No Name" },
            { "name": "power", "type": "Integer", "isAttr": true },
            { "name": "similar", "type": "Car", "isMany": true, "isReference": true }
          ]
        }
      ]
    }

    moddle allows you to instantiate that definition and create objects from it:

    import { Moddle } from 'moddle';
    
    var cars = new Moddle([ carsJSON ]);
    
    var taiga = cars.create('c:Car', { name: 'Taiga' });
    
    console.log(taiga);
    // { $type: 'c:Car', name: 'Taiga' };
    
    
    var cheapCar = cars.create('c:Car');
    
    console.log(cheapCar.name);
    // "No Name"
    
    
    // really?
    cheapCar.get('similar').push(taiga);

    Then again, moddle allows you to perform introspection on model instances, too.

    var carDescriptor = cheapCar.$descriptor;
    
    console.log(carDescriptor.properties);
    // [ { name: 'id', type: 'String', ... }, { name: 'name', type: 'String', ...} ... ]

    Have a look at our test coverage to learn about everything that is currently supported.

    Resources

    Related

    • moddle-xml: read xml documents based on moddle descriptors

    License

    MIT

    Install

    npm i moddle

    DownloadsWeekly Downloads

    42,821

    Version

    6.2.0

    License

    MIT

    Unpacked Size

    272 kB

    Total Files

    12

    Last publish

    Collaborators

    • skaiir-camunda
    • marstamm
    • beatrizmendes
    • bpmn-io-admin
    • nikku
    • pinussilvestrus
    • barmac
    • philippfromme
    • maxtru