All files / src/methods downloadAsFile.ts

100% Statements 9/9
100% Branches 2/2
100% Functions 1/1
100% Lines 8/8

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 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34                      10x                       2x 2x   2x 2x 2x   2x 2x    
/**
 * Trigger download file with provided content, file name and MIME type
 *
 * @example ```ts
 * downloadAsFile({
 *   data: '{"key": "value"}',
 *   fileName: 'myFile.json',
 *   fileType: 'application/json',
 * })
 * ```
 */
export const downloadAsFile = ({
  data,
  fileName = 'data.txt',
  fileType = 'text/plain',
}: {
  /** file content */
  data: string
  /** Generated file name */
  fileName?: string
  /** File MIME type */
  fileType?: string
}) => {
  const blob = new Blob([data], { type: fileType })
  const url = URL.createObjectURL(blob)
 
  const link = document.createElement('a')
  link.href = url
  link.download = fileName
 
  link.click()
  URL.revokeObjectURL(url)
}