31 lines
875 B
TypeScript
31 lines
875 B
TypeScript
export const MODULE_ACCESS_KEYS = [
|
|
'programming',
|
|
'design',
|
|
'learning',
|
|
'robot',
|
|
] as const;
|
|
|
|
export type ModuleAccessKey = typeof MODULE_ACCESS_KEYS[number];
|
|
|
|
export type ModuleAccess = Record<ModuleAccessKey, boolean>;
|
|
|
|
export const DEFAULT_MODULE_ACCESS: ModuleAccess = {
|
|
programming: true,
|
|
design: true,
|
|
learning: true,
|
|
robot: true,
|
|
};
|
|
|
|
export function normalizeModuleAccess(value: unknown): ModuleAccess {
|
|
const record = value && typeof value === 'object' && !Array.isArray(value)
|
|
? value as Record<string, unknown>
|
|
: {};
|
|
|
|
return {
|
|
programming: typeof record.programming === 'boolean' ? record.programming : true,
|
|
design: typeof record.design === 'boolean' ? record.design : true,
|
|
learning: typeof record.learning === 'boolean' ? record.learning : true,
|
|
robot: typeof record.robot === 'boolean' ? record.robot : true,
|
|
};
|
|
}
|