UNPKG

@atproto/oauth-scopes

Version:

A library for manipulating and validating ATproto OAuth scopes in TypeScript.

39 lines • 1.33 kB
import { Parser } from '../lib/parser.js'; import { ScopeStringSyntax } from '../lib/syntax-string.js'; import { isScopeStringFor } from '../lib/syntax.js'; import { knownValuesValidator } from '../lib/util.js'; export const IDENTITY_ATTRIBUTES = Object.freeze(['handle', '*']); export class IdentityPermission { constructor(attr) { this.attr = attr; } matches(options) { return this.attr === '*' || this.attr === options.attr; } toString() { return IdentityPermission.parser.format(this); } static { this.parser = new Parser('identity', { attr: { multiple: false, required: true, validate: knownValuesValidator(IDENTITY_ATTRIBUTES), }, }, 'attr'); } static fromString(scope) { if (!isScopeStringFor(scope, 'identity')) return null; const syntax = ScopeStringSyntax.fromString(scope); return IdentityPermission.fromSyntax(syntax); } static fromSyntax(syntax) { const result = IdentityPermission.parser.parse(syntax); if (!result) return null; return new IdentityPermission(result.attr); } static scopeNeededFor(options) { return IdentityPermission.parser.format(options); } } //# sourceMappingURL=identity-permission.js.map