@mainframe/app-permissions

0.3.0 • Public • Published

Application permissions utilities

Types

PermissionKeyBasic

Enum of permissions keys that only require a boolean check.

PermissionKey

Union of PermissionKeyBasic and HTTPS_REQUEST string.

HTTPSRequestDefinition

Array<string> representing a list of domains.

PermissionsDefinitions

Permissions definitions as supported by the daemon.

type PermissionsDefinitions = {
  HTTPS_REQUEST: HTTPSRequestDefinition,
  [PermissionKeyBasic]: boolean,
}

PartialPermissionsDefinitions

Permissions definitions as defined in an application manifest.

type PartialPermissionsDefinitions = {
  HTTPS_REQUEST?: HTTPSRequestDefinition,
  [PermissionKeyBasic]: boolean,
}

PermissionsDefinitionsDifference

Differences between two PartialPermissionsDefinitions.

type PermissionsDefinitionsDifference = {
  added: PartialPermissionsDefinitions,
  changed: PartialPermissionsDefinitions,
  removed: PartialPermissionsDefinitions,
  unchanged: PartialPermissionsDefinitions,
}

HTTPSRequestGrant

Permissions granted by the user for the HTTPS_REQUEST key.

type HTTPSRequestGrant = {
  granted: HTTPSRequestDefinition,
  denied: HTTPSRequestDefinition,
}

PermissionsGrants

Permissions granted by the user.

type PermissionsGrants = {
  HTTPS_REQUEST: HTTPSRequestGrant,
  [PermissionKeyBasic]: boolean,
}

PermissionGrant

type PermissionGrant = $Values<PermissionsGrants>

PermissionRequirement

Enum for permission requirement as defined in an application manifest: 'required' | 'optional'.

PermissionLifetime

Lifetime of a permission grant for a running app.

type PermissionLifetime =
  | 'app' // As long as the app is installed
  | 'user' // As long as the user allows
  | 'session' // As long as the app is running

PermissionsRequirements

Permissions requirements as defined in an application manifest.

type PermissionsRequirements = {
  [PermissionRequirement]: PermissionsDefinitions,
}

PermissionsRequirementsDifference

type PermissionsRequirementsDifference = {
  [PermissionRequirement]: PermissionsDefinitionsDifference,
}

PermissionsDetails

type PermissionsDetails = { [PermissionLifetime]: PermissionsGrants }

PermissionCheckResult

type PermissionCheckResult =
  | 'unknown_key' // Not a valid permission key
  | 'not_set' // Valid key but no value
  | 'invalid_input' // Special for HTTPS_REQUEST: domain not provided
  | 'granted'
  | 'denied'

APIs

EMPTY_DEFINITIONS

Constant of type PermissionsDefinitions

createHTTPSRequestGrant()

Arguments

  1. granted?: HTTPSRequestDefinition, defaults to []
  2. denied?: HTTPSRequestDefinition, defaults to []

Returns HTTPSRequestGrant

mergeGrantsToDetails()

Arguments

  1. app: PermissionsGrants
  2. user: PermissionsGrants

Returns PermissionsDetails

checkPermission()

Arguments

  1. permissions: PermissionsGrants
  2. key: PermissionKey
  3. input?: ?string: value to check against, only needed with the HTTPS_REQUEST key.

Returns HTTPSRequestGrant

getDefinitionsDifference()

Arguments

  1. current?: PermissionsDefinitions, defaults to EMPTY_DEFINITIONS
  2. next?: PermissionsDefinitions, defaults to EMPTY_DEFINITIONS

Returns PermissionsDefinitionsDifference

getRequirementsDifference()

Arguments

  1. current?: PermissionsRequirements, defaults to {}
  2. next?: PermissionsRequirements, defaults to {}

Returns PermissionsRequirementsDifference

Readme

Keywords

none

Package Sidebar

Install

npm i @mainframe/app-permissions

Weekly Downloads

0

Version

0.3.0

License

MIT

Unpacked Size

22.4 kB

Total Files

8

Last publish

Collaborators

  • aclarke
  • diogoperillo
  • howleysv
  • mosic
  • paul_lecam
  • sarahwiley