All files / src/ucan permissions.ts

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

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                                                                             
export type Permissions = {
  app?: AppInfo
  fs?: FileSystemPermissions
}
 
export type AppInfo = {
  name: string
  creator: string
}
 
export type FileSystemPermissions = {
  privatePaths: Array<string>
  publicPaths: Array<string>
}
 
 
export function appDataPath(app: AppInfo) {
  return `private/Apps/${app.creator}/${app.name}`
}
 
 
export function paths(permissions: Permissions): string[] {
  let list = []
 
  if (permissions.app) list.push('/' + appDataPath(permissions.app))
  if (permissions.fs && permissions.fs.privatePaths) list = list.concat(
    permissions.fs.privatePaths
      .map(p => '/private/' + p.replace(/^\/+/, ""))
      .map(p => p.replace(/\/+$/, ""))
  )
  if (permissions.fs && permissions.fs.publicPaths) list = list.concat(
    permissions.fs.publicPaths
      .map(p => '/public/' + p.replace(/^\/+/, ""))
      .map(p => p.replace(/\/+$/, ""))
  )
 
  return list
}