@aws/pdk
Version:
All documentation is located at: https://aws.github.io/aws-pdk
59 lines (55 loc) • 1.77 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);
}
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;