UNPKG

@aws/pdk

Version:

All documentation is located at: https://aws.github.io/aws-pdk

59 lines (55 loc) 1.77 kB
'use strict'; function isForwardRefNode(object) { return typeof object === 'object' && object !== null && typeof object.id === 'string'; } function isNodeModel(object) { return typeof object === 'object' && object !== null && object.$$type === 'Node' && typeof object.id === 'string'; } function isNodeRef(node) { return isNodeModel(node) || isForwardRefNode(node); } function isNodeRefLike(node) { return typeof node === 'string' || isNodeRef(node); } function isNodeRefGroupLike(target) { return Array.isArray(target) && target.every(isNodeRefLike); } function isCompass(c) { return ['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw', 'c'].includes(c); } function toNodeRef(target) { if (isNodeRef(target)) { return target; } const [id, port, compass] = target.split(':'); if (isCompass(compass)) { return { id, port, compass }; } return { id, port }; } function toNodeRefGroup(targets) { if (targets.length < 2 && (isNodeRefLike(targets[0]) && isNodeRefLike(targets[1])) === false) { throw Error('EdgeTargets must have at least 2 elements.'); } return targets.map((t) => toNodeRef(t)); } const RootModelsContext = Object.seal({ Graph: null, Digraph: null, Subgraph: null, Node: null, Edge: null, }); function createModelsContext(models) { return Object.assign(Object.seal(Object.assign({}, RootModelsContext)), models); } exports.RootModelsContext = RootModelsContext; exports.createModelsContext = createModelsContext; exports.isCompass = isCompass; exports.isForwardRefNode = isForwardRefNode; exports.isNodeModel = isNodeModel; exports.isNodeRef = isNodeRef; exports.isNodeRefGroupLike = isNodeRefGroupLike; exports.isNodeRefLike = isNodeRefLike; exports.toNodeRef = toNodeRef; exports.toNodeRefGroup = toNodeRefGroup;