I have an npm module of my own that does this, but I can't recommend it since I've never gotten around to documenting it very much, so it's useful to no one but me for now.
Here's one approach you can take, however, using moment.js:
1) Get the time that midnight at the start of the day in question occurs.
2) Get the time that midnight of the next day occurs.
3) Subtract the first time from the second time. If it's less than 24 hours, that's when the clock was turned forward, and DST began. If it's less than 24 hours, that's when the clock was turned back, and DST ended. Anything else is an ordinary day.
Update:
The other answer provides a good way to determine if DST is being observed at a particular moment in time (not quite perfect in a few odd cases). I thought you were getting at a different question -- whether or not the clocks got changed on a particular date. In case that matters to you, it can be done this way:
function checkDate(year, month, day) { // Month from 1-12, not the weird 0-11 month
const startOfDay = +new Date(year, month - 1, day, 0, 0, 0, 0);
const endOfDay = +new Date(year, month - 1, day + 1, 0, 0, 0, 0);
const hours = (endOfDay - startOfDay) / 1000 / 3600;
if (hours < 24)
console.log('DST started');
else if (hours > 24)
console.log('DST ended');
else
console.log('No DST change');
}