Skip to content

Latest commit

 

History

History
443 lines (436 loc) · 21.1 KB

CHANGELOG.md

File metadata and controls

443 lines (436 loc) · 21.1 KB

Changelog

fix

  • npm release is missing build files

deprecate

  • Node versions below 16.0.0 aren't supported anymore

feat(lib)

  • add gecos: expose custom message to other clients in the "real name" field (WHOIS).
  • add version: expose xdccJS version (or custom message) in the "version" field (WHOIS).
    • new XDCC({
        // ... host, port, etc..
        gecos: 'Most client call this field "real name" but meh..',
        version: 'mIRC 6.35'
      })
  • add eta to the 'downloading' event
    •   xdccJS.on('downloading', (fileInfo, received, percentage, eta) => {
         console.log(`${eta} ms remaining`)
        })

fix(lib+cli)

  • throttle parameter was ignored in some edge cases

fix(lib)

  • download() throttle's option was treated as Bytes instead of KiB

chores

  • revert to npm
  • update eslint config

BROKEN RELEASE


BROKEN RELEASE


BROKEN RELEASE


feat(lib)

  • add throttle/ipv6 status to Job.show()

fix(lib)

  • download() throttle's option was treated as Bytes instead of KiB

BREAKING CHANGES

  • xdcc.download's ipv6 parameter must be passed through an object: xdcc.download('bot', 1, { ipv6: true })

feat(lib)

  • add per download throttle: xdcc.download('bot', 1, { throttle: 1000 })
  • download's throttle can be applied on top of global throttle
xdccJS.config({ throttle: 5000 })
await xdccJS.download('BOT-A', 1, { throttle: 500 })
await xdccJS.download('BOT-A', 2, { throttle: 1000 })
await xdccJS.download('BOT-B', 1)
// BOT-A packet 1 and 2 is throttled at 1000 (latest value)
// BOT-B throttled at 5000

BREAKING CHANGES

  • xdcc.irc is no longer needed and accessible, methods and event are directly embed into xdcc

fix(lib+cli)

  • throttle doesn't affect bandwidth
  • change units (KiB, MiB, GiB, etc..)

feat(lib)

  • add xdcc.config() - change/access parameters during runtime
  • access irc-framework methods and events xdcc.irc.join('#lol') -> xdcc.join('#lol')

refactor(lib)

  • check user's parameters beforehand

feat(lib+cli)

  • add option to throttle bandwidth

chores

  • update dev dependencies
  • update readme

refactor(lib)

  • add more 'debug' events

Fix(deps)

  • fix potential security threat: Prototype Pollution in JSON5 via Parse Method

Feat(lib)

  • add 'debug' event

Fix(lib+cli)

  • ensure timeout is always in seconds

Chores

  • update dependencies

Feat(lib+cli)

  • alpha support for ipv6 downloads: parameter is only required for bot using both passive dcc and IPv6

Revert(lib)

  • move is() function back as a static class function. Partially revert 7233135

Continuous Integration

  • fix post publish hook interrupting each others on error
  • add lint to package scripts

Fix(cli)

  • option bot-name-match not working: change bot-name-match option to no-bot-name-match
  • option no-insecure not working as intendend

Refactor(lib)

  • supercharge function parameter for typechecking

Build(dev-deps)

  • updating depedencies

Chore(lib+cli)

  • remove unused generated doc

Fix(lib+cli)

  • re-fix buffer downloads getting aborted randomly or at 99.99% completion

Fix(lib+cli)

  • fix buffer overflow error for files between 2.1GB and 4.3GB

Fix(lib+cli)

  • fix downloads getting aborted randomly or at 99.99% completion (see issue#503)
  • fixed typo

Feat(lib)

  • add nickServ parameter to authenticate with NickServ (password only, use nickname as login)

Feat(cli)

  • add option --nickserv to authenticate with NickServ (password only, use nickname as login)
  • add option -t, --timeout

Fix(lib)

  • only print bot messages directly addressed to you (message sent to channels are ignored)
  • transfert timeout duration is no longer fixed to 10 seconds, use timeout parameter instead
  • fix/handle write ECONNRESET errors when bot disconnects without sending a "FIN" packet
  • accept alphanumeric tokens (ctcp negociation)

Feat(cli)

  • add message event to jobs

Feat(lib+cli)

  • messages sent by the current job's bot are printed out
  • add queue constructor parameters (CLI: --queue) which expect a regex to detect if the bot has moved you to a queue
xdccJS --host "irc.server.com" --bot "SOME_BOT" --download "1-100" --queue "/download(.*)\d+\sout\sof\s\d+\/gi"
# will match strings like : download "[somestuff] some files.pdf" pending, 10 out of 30
params.queue = /download(.*)\d+\sout\sof\s\d+\/gi

Fix(lib+cli)

  • crashing when running in a non-TTY environment
  • download bar not rendering new lines when a download is interrupted

Fix(lib)

  • cancel message/event wasn't triggered if there was no active downloads

Fix(lib+cli)

  • add option to allow/reject connection on TLS enabled server with self-signed certificates
  • CLI user can use the --no-insecure option to enable this feature.

BREAKING CHANGES (cli)

  • remove parameter --no-secure that allowed downloads if the bot's name did not match the requested
  • add parameter --bot-name-match to block downloads if bot's name does not match the requested

BREAKING CHANGES (lib)

  • renamed parameter secure to botNameMatch to avoid confusion with tls
  • optional parameter tls is no longer a boolean
 params.tls = { 
   enable: false, // required
   rejectUnauthorized: false // optional - default false
 }

Feat(lib)

  • Job.cancel() is now always defined

Fix(lib)

  • Job.cancel() wasn't sending "XDCC CANCEL" message

Fix(lib)

  • expose xdccJS events

Fix(lib)

  • clear connection timeout on download start

Fix(lib)

  • fixing the fix

Fix(lib)

  • fix download timed out when connection to bot is unstable

Fix(lib)

  • moved download timeout outside condition: since 4.4.14 the "no data" timeout was moved in a condition which wasn't reached at the end of the download

Fix(lib)

  • replacing node-fetch dependency with axios

Fix(lib)

  • fix download randomly failing: closing passthrough too early.

Fix(lib)

  • fix rashes caused by getIp function not working as intended and improve reliability by checking with multiple sources
  • fix crashes caused by progressBar not being imported properly

Fix(lib) + Chore(deps)

  • fix issue within commonjs context
  • remove public-ip
  • add "custom" getIp function

Fix(ci)

  • fix automated releases on npm
  • update discord bot to new API

Refactor(lib)

  • use of import type instead of import when necessary
  • better typing:
    • add export for interfaces Candidate
    • add export for class Job
    • add export for typed events: GlobalMessageEvents and JobMessageEvents

Docs(lib)

  • add job.isDone() to README

Style(lib)

  • remove unused imports
  • fix wrong indents

Chores(dev-deps)

  • add typed-emitter dependency

Breaking changes ⚠️

  • xdccJS now requires node >=14

Fix(CI)


Chores(dev-deps, deps)

  • updated all depedencies

Fix(lib+cli)

  • checking if host and port were valid was interpreted as flood on some servers 70e125d6

Chore(lib)

  • add type definitions for events f2f55850

CI


Fix(lib)

  • Fix Job not importing, Job is no longer exported as a namespace. use: import Job from '/' bd0b3b28 (thanks to @Firstus report)

Fix(doc)


Fix

  • TypeError had a wrong message when Constructor.tls type wasn't boolean 863b4fac

CI

  • fix github auto-release a0ec4314
  • updated code for discord.js >=13.1.0 03f9c68f

Doc


Features

Fix

  • fix connection to server being refused because of default username (credit: @TheFlashBold) 448e7786 cfd4101a

CI

Style(lib)

  • remove JobError.message emojis, padding and fancy colors 0f2e50bb

Doc(cli)

  • Simplified explanation about profiles e5b3c9ce

Chores

Chores(dev-deps)

  • bump axios from 0.21.1 to 0.22.0
  • bump commander from 8.1.0 to 8.2.0
  • bump discord.js from 13.1.0 to 13.2.0
  • bump eslint from 7.32.0 to 8.0.0
  • added eslint plugin import/typescript 2.24.2
  • bump mocha from 9.0.3 to 9.1.2
  • bump pkg from 5.3.1 to 5.3.3
  • bump ts-node from 10.2.0 to 10.2.1
  • bump typedoc from 0.21.6 to 0.21.6
  • bump typescript from 4.3.5 to 4.4.3
  • bump @types/chai from 4.2.21 to 4.2.22
  • bump @types/lodash from 4.14.172 to 4.14.175
  • bump @types/node from 16.6.1 to 16.10.3
  • bump @typescript-eslint/eslint-plugin 4.29.1 from to 4.33.0
  • bump @typescript-eslint/parser from 4.29.3 to 4.33.0

Features(lib)

  • ⚠️ xdccJS.download() is now asynchronous a1d170b1

Features(bin)

  • Notice user when hostname is unreachable bd452d5a

Fix(lib)

  • Emit error event instead of throwing b0ad1413
  • Fix error events being too ambiguous 0bf3ffc8
    • xdccJS.on('error', (err) => { } ) IRC errors ONLY
    • Job.on('error', (msg, fileInfo) => {} ) Job errors ONLY

Doc

Chores(dev-deps)

  • Add pkg to dev-deps
  • Remove unused dotenv-manipulator
  • bump @types/node from 16.4.10 to 16.6.1
  • bump @types/lodash from 4.14.171 to 4.14.172
  • bump @typescript-eslint/parser from 4.28.5 to 4.29.0
  • bump @typescript-eslint/eslint-plugin from 4.29.0 to 4.29.1
  • bump ts-node from 10.1.0 to 10.2.0
  • bump discord.js from 12.5.3 to 13.1.0

HotFix

  • Prevent xdccJS to indefinitely tries to connect to an unreachable host. e9135ea1

Fix(global)

  • Fix a bug introduced in v4.2.6 where parameter verbose wasn't optional d0e61f24

Fix(bin)

  • Profiles not loading 02371574 issue#238
  • --save-profile without argument was creating a profile named true which wasn't interpreted as a string 61d382e0
    • --delete-profile, --save-profile and --set-profile now require an argument

Fix

  • piped downloads via CLI are working again d90c160b

CI


Features(gobal)

  • added an extra verbose notification when a job is complete with the list of all packages that failed #236

Fix(bin)

  • changed profile location to user's home directory, some (linux) users couldn't save profile due to invalid write permission #237
  • warn user if multiple profile option are used in the same command #237
  • downloads cannot be triggered if --save/set/delete-profile is set #237

Chores(dev-deps)

  • bump @types/node from 16.4.7 to 16.4.10 #231
  • bump typedoc from 0.21.4 to 0.21.5 #232
  • bump @types/node from 16.4.7 to 16.4.10 #233

CI

  • changed keyword for skipping ci to [ci skip] c252f207
  • changed dependency update check interval from daily to weekly 4da55709

Docs


Fix:

  • Unicode characeters not showing up in some cases #230 (lib+bin)
  • Documentation still mentioning --server while its been replaced with --host #230

Improvement:

  • Added a rollbar next to download message #230 (lib+bin)
    • | [=== ] ETA: 10s @ 7.75 MB/s - 50%
    • / [=== ] ETA: 7s @ 7.75 MB/s - 60%
    • - [==== ] ETA: 8s @ 7.75 MB/s - 68%
    • etc..
  • Removed some ununsed imports and variables from tests 8ef272c

Misc:


New Feature:

  • Added a --quiet option to xdccJS CLI

Fix:

  • NodeJS 16x not properly reading package.json

Misc:

  • Dependencies update (a lot)

Improvement:

  • server option has been replace with host (lib+cli).
  • nick and username option are replaced with nickname (lib+cli)

Fix:

  • Fix bug with xdccJS CLI where nickname option wasn't applied if its lenght was more than 6 characters

Misc:

  • Dependencies update

Fix:

  • Added a fileInfo typescript interface
  • Added a downloading event typescript definition

Fix:

  • removed old compilted file from src folder

New Feature (jobs):

  • Added a 'downloading' event

Misc:

  • Dependencies update

Fix: (bin)

  • MAJOR FIX : Download weren't started if --wait wasn't provieded

Fix: (jobs)

  • Jobs weren't cancelable until they had a download ongoing (a103d1b)
  • job.cancel() now totally empty a job's queue instead of just canceling the current packet (a103d1b)

Style: (verbose)

  • Filename is now displayed before download starts (1605b25)
  • Download bar is cleared when it reaches 100% (PR#37)

Style :

Test:

Doc:

  • Updated documentation

Features :

  • Add a secure option : deny/allow files sent by bot with different name than the one requested. (4de1f94)