Source: config/Dsl.js

/**
 * Object containing information about the Domain Specific Language of the
 * Cloud Process Execution Engine and the change model of CpeeDiff.
 *
 * @see {https://cpee.org}
 * @type {Object}
 */
export const Dsl = {

  XML_DOC: {
    DATA_ELEMENTS: 'dataelements',
    ENDPOINTS: 'endpoints',
    WRAPPER: 'dslx',
  },

  ELEMENTS: {
    DSL_ROOT: {
      label: 'description',
      isLeaf: false,
    },
    CALL: {
      label: 'call',
      isLeaf: true,

    },
    SCRIPT: {
      label: 'manipulate',
      isLeaf: true,

    },
    PARALLEL: {
      label: 'parallel',
      isLeaf: false,

    },
    PARALLEL_BRANCH: {
      label: 'parallel_branch',
      isLeaf: false,

    },
    CHOICE: {
      label: 'choose',
      isLeaf: false,
    },
    ALTERNATIVE: {
      label: 'alternative',
      isLeaf: false,
    },
    OTHERWISE: {
      label: 'otherwise',
      isLeaf: false,
    },
    LOOP: {
      label: 'loop',
      isLeaf: false,
    },
    CRITICAL: {
      label: 'critical',
      isLeaf: false,
    },
    STOP: {
      label: 'stop',
      isLeaf: true,
    },
    BREAK: {
      label: 'escape',
      isLeaf: true,
    },
    TERMINATION: {
      label: 'terminate',
      isLeaf: true,
    },
  },

  CALL_PROPERTIES: {
    ENDPOINT: {
      label: 'endpoint',
    },
    PARAMETERS: {
      label: 'parameters',
    },
    LABEL: {
      label: 'label',
    },
    METHOD: {
      label: 'method',
    },
    ARGUMENTS: {
      label: 'arguments',
    },
    CODE: {
      label: 'code',
    },
    PREPARE: {
      label: 'prepare',
    },
    FINALIZE: {
      label: 'finalize',
    },
    UPDATE: {
      label: 'update',
    },
    RESCUE: {
      label: 'rescue',
    },
  },

  INNER_PROPERTIES: {
    CONDITION: {
      label: 'condition',
      default: 'true',
    },
    LOOP_MODE: {
      label: 'mode',
      options: [
        'pre_test',
        'post_test',
      ],
      default: 'pre_test',
    },
    CHOICE_MODE: {
      label: 'mode',
      options: [
        'exclusive',
        'inclusive',
      ],
      default: 'exclusive',
    },
    PARALLEL_WAIT: {
      label: 'wait',
      default: '-1',
    },
    PARALLEL_CANCEL: {
      label: 'cancel',
      options: [
        'last',
        'first',
      ],
      default: 'last',
    },
  },

  ENDPOINT_METHODS: [
    ':get',
    ':post',
    ':put',
    ':patch',
    ':delete',
  ],

  DEFAULT_NAMESPACE: 'http://cpee.org/ns/description/1.0',
  BASENODE: 'basenode',
  CHANGE_MODEL: {
    INSERTION: {
      label: 'insert',
      uri: 'http://cpee.org/ns/description/1.0/insert',
      prefix: 'ins',
    },
    DELETION: {
      label: 'delete',
      uri: 'http://cpee.org/ns/description/1.0/delete',
      prefix: 'del',
    },
    MOVE: {
      label: 'move',
      uri: 'http://cpee.org/ns/description/1.0/move',
      prefix: 'mov',
    },
    MOVE_FROM: {
      label: 'move_from',
      uri: 'http://cpee.org/ns/description/1.0/move-from',
      prefix: 'movfr',
    },
    UPDATE: {
      label: 'update',
      uri: 'http://cpee.org/ns/description/1.0/update',
      prefix: 'upd',
    },
    UPDATE_FROM: {
      label: 'udpate_from',
      uri: 'http://cpee.org/ns/description/1.0/update-from',
      prefix: 'updfr',
    },
    NIL: {
      label: 'nil',
      uri: 'http://cpee.org/ns/description/1.0/nil',
      prefix: 'nil',
    },
  },

  MERGE_TREE: {
    NAMESPACE_URI: 'http://cpee.org/ns/description/1.0/three-way-merge',
    NAMESPACE_PREFIX: 'm3',
  },
};

Dsl.ELEMENT_SET = new Set(
    Object.values(Dsl.ELEMENTS)
        .map((k) => k.label));

Dsl.LEAF_NODE_SET = new Set(
    Object.values(Dsl.ELEMENTS)
        .filter((k) => k.isLeaf)
        .map((k) => k.label));

Dsl.INNER_NODE_SET = new Set(
    Object.values(Dsl.ELEMENTS)
        .filter((k) => !k.isLeaf)
        .map((k) => k.label));