All files / trustedApplications trustedApplications.utils.ts

100% Statements 13/13
100% Branches 0/0
100% Functions 6/6
100% Lines 13/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 521x     1x           3x         3x   1x                       3x     1x             1x 1x       2x 2x       1x 1x    
import { BlankNode, IndexedFormula, NamedNode, st, Literal, sym, Statement } from 'rdflib'
import { Namespaces } from 'solid-namespace'
 
export function getStatementsToDelete (
  origin: NamedNode | Literal,
  person: NamedNode,
  kb: IndexedFormula,
  ns: Namespaces
): any {
  const applicationStatements = kb.statementsMatching(
    null,
    ns.acl('origin'),
    origin
  )
  const statementsToDelete = applicationStatements.reduce(
    (memo, st) => {
      return memo
        .concat(
          kb.statementsMatching(
            person,
            ns.acl('trustedApp'),
            st.subject as NamedNode
          )
        )
        .concat(kb.statementsMatching(st.subject))
    },
    [] as Array<Statement>
  )
  return statementsToDelete
}
 
export function getStatementsToAdd (
  origin: NamedNode,
  nodeName: string,
  modes: string[],
  person: NamedNode,
  ns: Namespaces
): any {
  const application = new BlankNode(`bn_${nodeName}`) // NamedNode(`${person.doc().uri}#${nodeName}`)
  return [
    st(person, ns.acl('trustedApp'), application, person.doc()),
    st(application, ns.acl('origin'), origin, person.doc()),
    ...modes
      .map(mode => sym(mode))
      .map(mode => st(application, ns.acl('mode'), mode, person.doc()))
  ]
}
 
export function generateRandomString () {
  return Math.random().toString(36).substr(2, 5)
}