Skip to content

4.4.0

Compare
Choose a tag to compare
@octet-stream octet-stream released this 19 Aug 16:35
· 2 commits to 4.x since this release

Update

  • Backport File.webkitRelativePath property for better types compatibility with native FormData

  • Backport improvements for instanceof checks on File object: It now will recognize File-ish objects and Files as File instance, but not Blob or Blob-ish objects:

    Old behaviour:

    import {Blob, File} from "formdata-node"
    
    const file = new File(["File content"], "file.txt")
    const blob = new Blob()
    
    file instanceof Blob // -> true
    file instanceof File // -> true
    
    blob instanceof Blob // -> true
    blob instanceof File // -> true
    
    const fileLike = {
      [Symbol.toStringTag]: "File",
      name: "file.txt",
      stream() { }
    }
    
    const blobLike = {
      [Symbol.toStringTag]: "Blob",
      stream() { }
    }
    
    fileLike instanceof Blob // -> true
    fileLike instanceof File // -> true
    
    blobLike instanceof Blob // -> true
    blobLike instanceof File // -> true

    New behaviour:

    import {Blob, File} from "formdata-node"
    
    const file = new File(["File content"], "file.txt")
    const blob = new Blob()
    
    file instanceof Blob // -> true
    file instanceof File // -> true
    
    blob instanceof Blob // -> true
    blob instanceof File // -> false
    
    const fileLike = {
      [Symbol.toStringTag]: "File",
      name: "file.txt",
      stream() { }
    }
    
    const blobLike = {
      [Symbol.toStringTag]: "Blob",
      stream() { }
    }
    
    fileLike instanceof Blob // -> true
    fileLike instanceof File // -> true
    
    blobLike instanceof Blob // -> true
    blobLike instanceof File // -> false
  • Backport File values normalization for better alignment with the spec. FormData instances will store Files added via .set() and .append() methods as is.

    Old behaviour:

    import {FormData, File} from "formdata-node"
    
    const file = new File(["File content"], "file.txt")
    const form = new FormData()
    
    form.set("file", file) // will create a new File, then store that new object
    form.get("file") === file // -> false
    
    form.set("file", file, "renamed-file.txt") // will also create a new File (with the new name), then store that new object
    form.get("file") === file // -> false

    New behaviour:

    import {FormData, File} from "formdata-node"
    
    const file = new File(["File content"], "file.txt")
    const form = new FormData()
    
    form.set("file", file) // will store this File instance as is
    form.get("file") === file // -> true
    
    form.set("file", file, "renamed-file.txt") // will create a new File (with the new name), then store that new object
    form.get("file") === file // -> false

All changes: v4.3.3...v4.4.0