[lib] Introduce MinimallyEncodedRoleInfo and validator
Summary:
RoleInfo type with permissions as $ReadOnlyArray<string> instead of ThreadRolePermissionsBlob.
Next diffs:
- Introduce MinimallyEncodedThreadCurrentUserInfo
- Introduce MinimallyEncodedRawThreadInfo
- Higher level utilities for translating back/forth from RawThreadInfo <=> MinimallyEncodedRawThreadInfo. Found this to be cleaner API than encoding/decoding RawThreadInfo.currentUser.permissions and RawThreadInfo.members[memberID].permissions "manually" a bunch of different places.
- Native refactoring + migrations
- Web refactoring
- Flipping the switch
Test Plan: Added some unit tests, will consume types in subsequent diffs.
Reviewers: ashoat, ginsu, tomek, rohan
Reviewed By: ashoat
Subscribers: wyilio
Differential Revision: https://phab.comm.dev/D9731