@aws/pdk
Version:
All documentation is located at: https://aws.github.io/aws-pdk
59 lines (56 loc) • 1.55 kB
JavaScript
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);
}
export {
RootModelsContext,
createModelsContext,
isCompass,
isForwardRefNode,
isNodeModel,
isNodeRef,
isNodeRefGroupLike,
isNodeRefLike,
toNodeRef,
toNodeRefGroup,
};