symlink(filepath, target, mode) {
    if (this._state.finalize || this._state.aborted) {
      this.emit("error", new ArchiverError("QUEUECLOSED"));
      return this;
    }
    if (typeof filepath !== "string" || filepath.length === 0) {
      this.emit("error", new ArchiverError("SYMLINKFILEPATHREQUIRED"));
      return this;
    }
    if (typeof target !== "string" || target.length === 0) {
      this.emit(
        "error",
        new ArchiverError("SYMLINKTARGETREQUIRED", { filepath: filepath }),
      );
      return this;
    }
    if (!this._supportsSymlink) {
      this.emit(
        "error",
        new ArchiverError("SYMLINKNOTSUPPORTED", { filepath: filepath }),
      );
      return this;
    }
    var data = {};
    data.type = "symlink";
    data.name = filepath.replace(/\\/g, "/");
    data.linkname = target.replace(/\\/g, "/");
    data.sourceType = "buffer";
    if (typeof mode === "number") {
      data.mode = mode;
    }
    this._entriesCount++;
    this._queue.push({
      data: data,
      source: Buffer.concat([]),
    });
    return this;
  }
Appends a symlink to the instance.

This does NOT interact with filesystem and is used for programmatically creating symlinks.

@param  {String} filepath The symlink path (within archive).
@param  {String} target The target path (within archive).
@param  {Number} mode Sets the entry permissions.
@return {this}