Page MenuHomePhorge

D9676.1768436718.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D9676.1768436718.diff

diff --git a/lib/permissions/minimally-encoded-thread-permissions.js b/lib/permissions/minimally-encoded-thread-permissions.js
--- a/lib/permissions/minimally-encoded-thread-permissions.js
+++ b/lib/permissions/minimally-encoded-thread-permissions.js
@@ -7,7 +7,7 @@
ThreadPermission,
ThreadPermissionsInfo,
} from '../types/thread-permission-types.js';
-import { entries } from '../utils/objects.js';
+import { entries, invertObjectToMap } from '../utils/objects.js';
// `baseRolePermissionEncoding` maps permission names to indices.
// These indices represent the 6-bit basePermission part of the 10-bit role
@@ -126,21 +126,18 @@
return bitmask.toString(16).padStart(3, '0');
};
-const inverseBaseRolePermissionEncoding = new Map(
- Object.entries(baseRolePermissionEncoding).map(([key, value]) => [
- value,
- key,
- ]),
+const inverseBaseRolePermissionEncoding = invertObjectToMap(
+ baseRolePermissionEncoding,
);
// $FlowIssue bigint-unsupported
-const inversePropagationPrefixes: Map<bigint, string> = new Map(
- Object.entries(propagationPrefixes).map(([key, value]) => [value, key]),
-);
+const inversePropagationPrefixes: Map<bigint, string> =
+ invertObjectToMap(propagationPrefixes);
+
// $FlowIssue bigint-unsupported
-const inverseFilterPrefixes: Map<bigint, string> = new Map(
- Object.entries(filterPrefixes).map(([key, value]) => [value, key]),
-);
+const inverseFilterPrefixes: Map<bigint, string> =
+ invertObjectToMap(filterPrefixes);
+
const decodeRolePermissionBitmask = (bitmask: string): string => {
const bitmaskInt = BigInt(`0x${bitmask}`);
const basePermission = (bitmaskInt >> BigInt(4)) & BigInt(63);
diff --git a/lib/utils/objects.js b/lib/utils/objects.js
--- a/lib/utils/objects.js
+++ b/lib/utils/objects.js
@@ -129,6 +129,14 @@
);
}
+function invertObjectToMap<K, V>(obj: { +[K]: V }): Map<V, K> {
+ const invertedMap = new Map<V, K>();
+ for (const key of Object.keys(obj)) {
+ invertedMap.set(obj[key], key);
+ }
+ return invertedMap;
+}
+
export {
findMaximumDepth,
values,
@@ -137,4 +145,5 @@
assertObjectsAreEqual,
deepDiff,
entries,
+ invertObjectToMap,
};

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 15, 12:25 AM (45 m, 36 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5929614
Default Alt Text
D9676.1768436718.diff (2 KB)

Event Timeline