New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

cnd-parser

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cnd-parser

A parser for JCR's CND files.

latest
Source
npmnpm
Version
0.1.0
Version published
Weekly downloads
9
28.57%
Maintainers
1
Weekly downloads
 
Created
Source

cnd-parser

  • Latest Release: GitHub version
  • Build-Status: Build Status

cnd-parser is copyright 2015 by DracoBlue http://dracoblue.net

What is cnd-parser?

This is a small (nodejs/browserify) library for parsing CND-Strings (defined in jsr-170 and explained at jackrabbit).

This implementation doesn't support the full CND-syntax.

Limitations

  • constraints and default values are not supported
  • each property and childnode needs to be defined on one row
  • shortcuts (like m for multiple) are not supported
  • the library does no validation for nodetype, property or childnode options

Example

This example:

<ns = 'http://namespace.com/ns'>
[ns:NodeType] > ns:ParentType1, ns:ParentType2
  orderable mixin
  - ex:property (string) primary mandatory autocreated protected multiple version
  + ns:node (ns:reqType1, ns:reqType2) mandatory autocreated protected multiple version
[nt:resource] > mix:referenceable
  - jcr:encoding
  - jcr:mimeType mandatory
  - jcr:data (binary) mandatory
  - jcr:lastModified (date) mandatory ignore

can be parsed (in nodejs) like this:

cnd = cndParser.parseString('/* string here! */');
console.log(JSON.stringify(cnd.getNodeTypes(), null, 4));

Output:

[
    {
        "options": {
            "orderable": true,
            "mixin": true
        },
        "properties": [
            {
                "options": {
                    "primary": true,
                    "mandatory": true,
                    "autocreated": true,
                    "protected": true,
                    "multiple": true,
                    "version": true
                },
                "namespacedName": "ex:property",
                "localName": "property",
                "namespace": "ex",
                "types": [
                    "string"
                ]
            }
        ],
        "childNodes": [
            {
                "options": {
                    "mandatory": true,
                    "autocreated": true,
                    "protected": true,
                    "multiple": true,
                    "version": true
                },
                "namespacedName": "ns:node",
                "localName": "node",
                "namespace": "ns",
                "types": [
                    "ns:reqType1",
                    "ns:reqType2"
                ]
            }
        ],
        "namespacedName": "ns:NodeType",
        "localName": "NodeType",
        "namespace": "ns",
        "superTypes": [
            "ns:ParentType1",
            "ns:ParentType2"
        ]
    },
    {
        "options": {},
        "properties": [
            {
                "options": {},
                "namespacedName": "jcr:encoding",
                "localName": "encoding",
                "namespace": "jcr"
            },
            {
                "options": {
                    "mandatory": true
                },
                "namespacedName": "jcr:mimeType",
                "localName": "mimeType",
                "namespace": "jcr"
            },
            {
                "options": {
                    "mandatory": true
                },
                "namespacedName": "jcr:data",
                "localName": "data",
                "namespace": "jcr",
                "types": [
                    "binary"
                ]
            },
            {
                "options": {
                    "mandatory": true,
                    "ignore": true
                },
                "namespacedName": "jcr:lastModified",
                "localName": "lastModified",
                "namespace": "jcr",
                "types": [
                    "date"
                ]
            }
        ],
        "childNodes": [],
        "namespacedName": "nt:resource",
        "localName": "resource",
        "namespace": "nt",
        "superTypes": [
            "mix:referenceable"
        ]
    }
]

License

The cnd-parser project is licensed under the MIT License. See LICENSE for more information.

Keywords

cnd

FAQs

Package last updated on 13 Jun 2015

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