@atproto/oauth-scopes
Version:
A library for manipulating and validating ATproto OAuth scopes in TypeScript.
39 lines • 1.33 kB
JavaScript
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