-export type JSONPrimitive = number | boolean | string | null
-// eslint-disable-next-line no-use-before-define
-export type JSONValue = JSONPrimitive | JSONArray | JSONObject
-export type JSONObject = { [k: string]: JSONValue }
-export type JSONArray = Array<JSONValue>
+/**
+ * Make all properties in T non-readonly.
+ */
+export type Draft<T> = { -readonly [P in keyof T]?: T[P] }