All files / src/question-formats json.ts

100% Statements 7/7
100% Branches 0/0
100% Functions 2/2
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 204x 4x           4x       5x 5x 5x     1x      
import { z } from 'zod'
import { Question, QuestionSchema } from '../question'
import { QuestionFormat } from './format'
 
/**
 * JSON encoded format of {@link Question}
 */
export const json: QuestionFormat = {
  fileType: 'application/json',
  fileExtension: 'json',
  import: (text: string): Question[] => {
    const data = JSON.parse(text)
    const schema = z.array(QuestionSchema)
    return schema.parse(data)
  },
  export: (questions: Question[]) => {
    return JSON.stringify(questions, null, 2)
  },
}