31 lines
818 B
TypeScript
31 lines
818 B
TypeScript
import type { JsonObject, JsonRecord } from '../types/json.js'
|
|
import { asJsonObject, isPlainObject } from '../types/json.js'
|
|
import type { TaskContext } from '../types/task-context.js'
|
|
|
|
export type { JsonRecord, JsonObject }
|
|
|
|
export function parseJsonObject(value: unknown): JsonObject {
|
|
if (!value) {
|
|
return {}
|
|
}
|
|
|
|
if (isPlainObject(value)) {
|
|
return value
|
|
}
|
|
|
|
try {
|
|
const parsed = JSON.parse(String(value || '{}')) as unknown
|
|
return asJsonObject(parsed)
|
|
} catch {
|
|
return {}
|
|
}
|
|
}
|
|
|
|
export function parseTaskContext(task: { context_json?: unknown } | null | undefined): TaskContext {
|
|
return parseJsonObject(task?.context_json) as TaskContext
|
|
}
|
|
|
|
export function parseTaskState(task: { state_json?: unknown } | null | undefined): JsonObject {
|
|
return parseJsonObject(task?.state_json)
|
|
}
|