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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | 18x 18x 216x 216x 39x 177x 243x 216x 216x 216x 241x 216x 26x 26x 3x 23x 35x 18x 11x 8x 3x 11x 17x 18x 18x 18x 234x 18x 216x 241x 241x 57x 241x 18x 18x | class AuthScopes {
public static SCOPE_DELIMITER = ',';
private compressedScopes: Set<string>;
private expandedScopes: Set<string>;
constructor(scopes: string | string[]) {
let scopesArray: string[] = [];
if (typeof scopes === 'string') {
scopesArray = scopes.split(new RegExp(`${AuthScopes.SCOPE_DELIMITER}\\s*`));
} else {
scopesArray = scopes;
}
scopesArray = scopesArray.map((scope) => scope.trim()).filter((scope) => scope.length);
const impliedScopes = this.getImpliedScopes(scopesArray);
const scopeSet = new Set(scopesArray);
const impliedSet = new Set(impliedScopes);
this.compressedScopes = new Set([...scopeSet].filter((x) => !impliedSet.has(x)));
this.expandedScopes = new Set([...scopeSet, ...impliedSet]);
}
public has(scope: string | string[] | AuthScopes) {
let other: AuthScopes;
if (scope instanceof AuthScopes) {
other = scope;
} else {
other = new AuthScopes(scope);
}
return other.toArray().filter((x) => !this.expandedScopes.has(x)).length === 0;
}
public equals(otherScopes: string | string[] | AuthScopes) {
let other: AuthScopes;
if (otherScopes instanceof AuthScopes) {
other = otherScopes;
} else {
other = new AuthScopes(otherScopes);
}
return (
this.compressedScopes.size === other.compressedScopes.size &&
this.toArray().filter((x) => !other.has(x)).length === 0
);
}
public toString() {
return this.toArray().join(AuthScopes.SCOPE_DELIMITER);
}
public toArray() {
return [...this.compressedScopes];
}
private getImpliedScopes(scopesArray: string[]): string[] {
return scopesArray.reduce((array: string[], current: string) => {
const matches = current.match(/^(unauthenticated_)?write_(.*)$/);
if (matches) {
array.push(`${matches[1] ? matches[1] : ''}read_${matches[2]}`);
}
return array;
}, []);
}
}
export {AuthScopes};
|