rescribet/link-lib

View on GitHub
src/utilities/slices.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import { SomeTerm } from "@ontologies/core";

import { Id } from "../datastrucures/DataSlice";
import { MultimapTerm } from "../datastrucures/Fields";

import { normalizeType } from "../utilities";

export const mergeTerms = (
  a: SomeTerm | MultimapTerm | undefined,
  b: SomeTerm | MultimapTerm,
): SomeTerm | MultimapTerm => {
  if (Array.isArray(a)) {
    return Array.from(new Set([...a, ...normalizeType(b)]));
  } else if (a) {
    return Array.from(new Set([a, ...normalizeType(b)]));
  } else {
    return b;
  }
};

export const isLocalId = (id: Id): boolean => id.startsWith("_:");

export const isGlobalId = (id: Id): boolean => id.startsWith("/") || (id.includes(":") && !id.startsWith("_:"));