Commit b61dc7b
feat(deps): Bump node-cron from 3.0.3 to 4.6.0 (#23465)
Bumps [node-cron](https://github.com/node-cron/node-cron) from 3.0.3 to
4.6.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/node-cron/node-cron/releases">node-cron's
releases</a>.</em></p>
<blockquote>
<h2>v4.6.0</h2>
<h2><a
href="https://github.com/node-cron/node-cron/compare/v4.5.0...v4.6.0">4.6.0</a>
(2026-07-04)</h2>
<h3>Added</h3>
<ul>
<li>add cron.shutdown(timeout?) for graceful process teardown (<a
href="https://redirect.github.com/node-cron/node-cron/issues/589">#589</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/35f1a61ba7cef987f7ed342489d8d0f0220553b8">35f1a61</a>)</li>
<li>add unref option for heartbeat timers (<a
href="https://redirect.github.com/node-cron/node-cron/issues/588">#588</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/35cb140d9c2d790ff295d54fbe82f6eec9b27e33">35cb140</a>)</li>
<li><strong>day-of-month:</strong> Quartz-style W, L-n and ? modifiers
(<a
href="https://redirect.github.com/node-cron/node-cron/issues/570">#570</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/cbe379bce9d770c84328399dca514bd92a467c18">cbe379b</a>)</li>
<li>emit task:failed when a background daemon exits unexpectedly (<a
href="https://github.com/node-cron/node-cron/commit/7bd91d62d1472d52f9adbddfddc0c47458623080">7bd91d6</a>)</li>
<li>support cron expression nicknames (<a
href="https://github.com/yearly"><code>@yearly</code></a>, <a
href="https://github.com/daily"><code>@daily</code></a>, etc.) (<a
href="https://redirect.github.com/node-cron/node-cron/issues/579">#579</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/6a6e14e43ab4ce5c21b52414a17e3e20311bd7bf">6a6e14e</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>background task state transition on stop/destroy without fork (<a
href="https://redirect.github.com/node-cron/node-cron/issues/584">#584</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/9dbc6de269cf5855b0afc037fb4446ef9791d761">9dbc6de</a>)</li>
<li>clear jitter timeout on runner stop (<a
href="https://redirect.github.com/node-cron/node-cron/issues/583">#583</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/28b8146dd164ea992e1d5a649756b2bba4e062c4">28b8146</a>)</li>
<li>CommonJS type resolution (<a
href="https://redirect.github.com/node-cron/node-cron/issues/608">#608</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/ee9d294e71e526edffa2a2f902cad71e1f570d44">ee9d294</a>)</li>
<li>correct falied->failed typo in daemon task error log (<a
href="https://redirect.github.com/node-cron/node-cron/issues/594">#594</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/66c6961f2140d84cb71b101013abc170977297eb">66c6961</a>)</li>
<li>correct shutdown listener typing that broke the build (<a
href="https://redirect.github.com/node-cron/node-cron/issues/595">#595</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/7aac3adc22516faad054f2b3ef7362edf62e20f3">7aac3ad</a>)</li>
<li>correlate execute() by id, isolate event hooks, and stop counting
manual runs toward maxExecutions (<a
href="https://redirect.github.com/node-cron/node-cron/issues/607">#607</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/0f039a94dcaf6221ea406221b1e7c5eb34a47c4b">0f039a9</a>)</li>
<li>daemon serialized task state with wrong field name (<a
href="https://redirect.github.com/node-cron/node-cron/issues/587">#587</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/688d465b82889f07f39dfef9170d808c1f40330e">688d465</a>)</li>
<li>expand inverted ranges with wrap-around instead of silently swapping
(<a
href="https://redirect.github.com/node-cron/node-cron/issues/602">#602</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/a10ae53626f1cc6e426e23266423f5e334a6871e">a10ae53</a>)</li>
<li>harden cron.shutdown() teardown (<a
href="https://redirect.github.com/node-cron/node-cron/issues/598">#598</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/a0b0d1ff9313d0f8532130e5fcb873f29f48fd1f">a0b0d1f</a>)</li>
<li>kill orphan child process on background task stop/destroy timeout
(<a
href="https://redirect.github.com/node-cron/node-cron/issues/582">#582</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/8179e105a02b91035bce441309c1cda12aaf4c4a">8179e10</a>)</li>
<li>make concurrent background start() await the daemon and time out
coordinator lookups (<a
href="https://redirect.github.com/node-cron/node-cron/issues/605">#605</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/446f03ae8f366683c43b186b93bcba5091a00042">446f03a</a>)</li>
<li>make lifecycle calls on a destroyed task safe no-ops (<a
href="https://redirect.github.com/node-cron/node-cron/issues/600">#600</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/7fa979514f9181aa63b0363cddb2acbf045b1f8c">7fa9795</a>)</li>
<li>prevent double destroy on registry remove (<a
href="https://redirect.github.com/node-cron/node-cron/issues/585">#585</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/8ae9f06463954754d4958f9eb478aed73e8adc4d">8ae9f06</a>)</li>
<li><strong>release-please:</strong> match existing v-prefixed tags (<a
href="https://redirect.github.com/node-cron/node-cron/issues/575">#575</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/e43c152188d993f59a12e3e9e258a695b44ca579">e43c152</a>)</li>
<li>runner promise bugs that could hang scheduling or crash process (<a
href="https://redirect.github.com/node-cron/node-cron/issues/581">#581</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/0ae62be8b3639762f1b09569cbb66503c940d8e5">0ae62be</a>)</li>
<li>unref the IPC channel so background tasks let the process exit (<a
href="https://redirect.github.com/node-cron/node-cron/issues/599">#599</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/534e59344c019bc69869bc33e5cdcf1ff8ae1f1e">534e593</a>)</li>
<li>validate the cron expression when scheduling a task (<a
href="https://redirect.github.com/node-cron/node-cron/issues/603">#603</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/196e6cd41ac32ab9df56668ac70e1b5232384bb8">196e6cd</a>)</li>
<li>validate() consistency and multi-asterisk expansion (<a
href="https://redirect.github.com/node-cron/node-cron/issues/606">#606</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/8cf41c436f5b544e32908d6e73b2679e973074e3">8cf41c4</a>)</li>
<li>weekday 7-to-0 conversion corrupting ranges (<a
href="https://redirect.github.com/node-cron/node-cron/issues/580">#580</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/c8a3943817cc1338d4f03dbc7ad52fa34d449134">c8a3943</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>replace chai and sinon with native vitest assertions (<a
href="https://redirect.github.com/node-cron/node-cron/issues/590">#590</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/d29d07a005911b4ae19ce5a6bb55571018972e1f">d29d07a</a>)</li>
</ul>
<h2>v4.5.0</h2>
<h2>Added</h2>
<ul>
<li><strong><code>lastRun()</code></strong> introspection getter on
<code>ScheduledTask</code>: returns <code>{ date, result }</code> after
a successful execution, <code>{ date, error }</code> after a failed one,
or <code>null</code> before the first run.</li>
<li><strong>Extended day-of-week tokens</strong>:
<code><weekday>#<nth></code> (nth weekday of the month, e.g.
<code>1#1</code> for the first Monday) and <code><weekday>L</code>
(last weekday of the month, e.g. <code>5L</code> for the last
Friday).</li>
</ul>
<h2>Performance</h2>
<ul>
<li>Cache <code>Intl.DateTimeFormat</code> instances per timezone
instead of rebuilding on every call.</li>
<li>Parse the cron expression once per <code>TimeMatcher</code> instead
of re-parsing in <code>MatcherWalker</code>.</li>
<li>Compute the GMT offset lazily (only when formatting ISO strings, not
during the next-run search).</li>
<li>Replace <code>crypto.randomBytes</code> with
<code>crypto.randomUUID</code> for internal ID generation.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/node-cron/node-cron/blob/main/CHANGELOG.md">node-cron's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/node-cron/node-cron/compare/v4.5.0...v4.6.0">4.6.0</a>
(2026-07-04)</h2>
<h3>Added</h3>
<ul>
<li>add cron.shutdown(timeout?) for graceful process teardown (<a
href="https://redirect.github.com/node-cron/node-cron/issues/589">#589</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/35f1a61ba7cef987f7ed342489d8d0f0220553b8">35f1a61</a>)</li>
<li>add unref option for heartbeat timers (<a
href="https://redirect.github.com/node-cron/node-cron/issues/588">#588</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/35cb140d9c2d790ff295d54fbe82f6eec9b27e33">35cb140</a>)</li>
<li><strong>day-of-month:</strong> Quartz-style W, L-n and ? modifiers
(<a
href="https://redirect.github.com/node-cron/node-cron/issues/570">#570</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/cbe379bce9d770c84328399dca514bd92a467c18">cbe379b</a>)</li>
<li>emit task:failed when a background daemon exits unexpectedly (<a
href="https://github.com/node-cron/node-cron/commit/7bd91d62d1472d52f9adbddfddc0c47458623080">7bd91d6</a>)</li>
<li>support cron expression nicknames (<a
href="https://github.com/yearly"><code>@yearly</code></a>, <a
href="https://github.com/daily"><code>@daily</code></a>, etc.) (<a
href="https://redirect.github.com/node-cron/node-cron/issues/579">#579</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/6a6e14e43ab4ce5c21b52414a17e3e20311bd7bf">6a6e14e</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>background task state transition on stop/destroy without fork (<a
href="https://redirect.github.com/node-cron/node-cron/issues/584">#584</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/9dbc6de269cf5855b0afc037fb4446ef9791d761">9dbc6de</a>)</li>
<li>clear jitter timeout on runner stop (<a
href="https://redirect.github.com/node-cron/node-cron/issues/583">#583</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/28b8146dd164ea992e1d5a649756b2bba4e062c4">28b8146</a>)</li>
<li>CommonJS type resolution (<a
href="https://redirect.github.com/node-cron/node-cron/issues/608">#608</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/ee9d294e71e526edffa2a2f902cad71e1f570d44">ee9d294</a>)</li>
<li>correct falied->failed typo in daemon task error log (<a
href="https://redirect.github.com/node-cron/node-cron/issues/594">#594</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/66c6961f2140d84cb71b101013abc170977297eb">66c6961</a>)</li>
<li>correct shutdown listener typing that broke the build (<a
href="https://redirect.github.com/node-cron/node-cron/issues/595">#595</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/7aac3adc22516faad054f2b3ef7362edf62e20f3">7aac3ad</a>)</li>
<li>correlate execute() by id, isolate event hooks, and stop counting
manual runs toward maxExecutions (<a
href="https://redirect.github.com/node-cron/node-cron/issues/607">#607</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/0f039a94dcaf6221ea406221b1e7c5eb34a47c4b">0f039a9</a>)</li>
<li>daemon serialized task state with wrong field name (<a
href="https://redirect.github.com/node-cron/node-cron/issues/587">#587</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/688d465b82889f07f39dfef9170d808c1f40330e">688d465</a>)</li>
<li>expand inverted ranges with wrap-around instead of silently swapping
(<a
href="https://redirect.github.com/node-cron/node-cron/issues/602">#602</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/a10ae53626f1cc6e426e23266423f5e334a6871e">a10ae53</a>)</li>
<li>harden cron.shutdown() teardown (<a
href="https://redirect.github.com/node-cron/node-cron/issues/598">#598</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/a0b0d1ff9313d0f8532130e5fcb873f29f48fd1f">a0b0d1f</a>)</li>
<li>kill orphan child process on background task stop/destroy timeout
(<a
href="https://redirect.github.com/node-cron/node-cron/issues/582">#582</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/8179e105a02b91035bce441309c1cda12aaf4c4a">8179e10</a>)</li>
<li>make concurrent background start() await the daemon and time out
coordinator lookups (<a
href="https://redirect.github.com/node-cron/node-cron/issues/605">#605</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/446f03ae8f366683c43b186b93bcba5091a00042">446f03a</a>)</li>
<li>make lifecycle calls on a destroyed task safe no-ops (<a
href="https://redirect.github.com/node-cron/node-cron/issues/600">#600</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/7fa979514f9181aa63b0363cddb2acbf045b1f8c">7fa9795</a>)</li>
<li>prevent double destroy on registry remove (<a
href="https://redirect.github.com/node-cron/node-cron/issues/585">#585</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/8ae9f06463954754d4958f9eb478aed73e8adc4d">8ae9f06</a>)</li>
<li><strong>release-please:</strong> match existing v-prefixed tags (<a
href="https://redirect.github.com/node-cron/node-cron/issues/575">#575</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/e43c152188d993f59a12e3e9e258a695b44ca579">e43c152</a>)</li>
<li>runner promise bugs that could hang scheduling or crash process (<a
href="https://redirect.github.com/node-cron/node-cron/issues/581">#581</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/0ae62be8b3639762f1b09569cbb66503c940d8e5">0ae62be</a>)</li>
<li>unref the IPC channel so background tasks let the process exit (<a
href="https://redirect.github.com/node-cron/node-cron/issues/599">#599</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/534e59344c019bc69869bc33e5cdcf1ff8ae1f1e">534e593</a>)</li>
<li>validate the cron expression when scheduling a task (<a
href="https://redirect.github.com/node-cron/node-cron/issues/603">#603</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/196e6cd41ac32ab9df56668ac70e1b5232384bb8">196e6cd</a>)</li>
<li>validate() consistency and multi-asterisk expansion (<a
href="https://redirect.github.com/node-cron/node-cron/issues/606">#606</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/8cf41c436f5b544e32908d6e73b2679e973074e3">8cf41c4</a>)</li>
<li>weekday 7-to-0 conversion corrupting ranges (<a
href="https://redirect.github.com/node-cron/node-cron/issues/580">#580</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/c8a3943817cc1338d4f03dbc7ad52fa34d449134">c8a3943</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>replace chai and sinon with native vitest assertions (<a
href="https://redirect.github.com/node-cron/node-cron/issues/590">#590</a>)
(<a
href="https://github.com/node-cron/node-cron/commit/d29d07a005911b4ae19ce5a6bb55571018972e1f">d29d07a</a>)</li>
</ul>
<h2>[4.5.0] - 2026-06-21</h2>
<h3>Added</h3>
<ul>
<li><strong><code>lastRun()</code></strong> introspection getter on
<code>ScheduledTask</code>: returns <code>{ date, result }</code> after
a successful execution, <code>{ date, error }</code> after a failed one,
or <code>null</code> before the first
run. (<a
href="https://redirect.github.com/node-cron/node-cron/issues/557">#557</a>)</li>
<li><strong>Extended day-of-week tokens</strong>:
<code><weekday>#<nth></code> (nth weekday of the month, e.g.
<code>1#1</code> for the first Monday) and <code><weekday>L</code>
(last weekday of the month, e.g. <code>5L</code>
for the last Friday). (<a
href="https://redirect.github.com/node-cron/node-cron/issues/560">#560</a>)</li>
</ul>
<h3>Performance</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/node-cron/node-cron/commit/0be2ca03ffebc79fa823081b8a44bff6f731a583"><code>0be2ca0</code></a>
chore(main): release 4.6.0 (<a
href="https://redirect.github.com/node-cron/node-cron/issues/576">#576</a>)</li>
<li><a
href="https://github.com/node-cron/node-cron/commit/813ab08701e8a45836a0ce9be9bd32011aade29e"><code>813ab08</code></a>
docs: note bundlers must keep node-cron external for background tasks
(<a
href="https://redirect.github.com/node-cron/node-cron/issues/610">#610</a>)</li>
<li><a
href="https://github.com/node-cron/node-cron/commit/ee9d294e71e526edffa2a2f902cad71e1f570d44"><code>ee9d294</code></a>
fix: CommonJS type resolution (<a
href="https://redirect.github.com/node-cron/node-cron/issues/608">#608</a>)</li>
<li><a
href="https://github.com/node-cron/node-cron/commit/0f039a94dcaf6221ea406221b1e7c5eb34a47c4b"><code>0f039a9</code></a>
fix: correlate execute() by id, isolate event hooks, and stop counting
manual...</li>
<li><a
href="https://github.com/node-cron/node-cron/commit/8cf41c436f5b544e32908d6e73b2679e973074e3"><code>8cf41c4</code></a>
fix: validate() consistency and multi-asterisk expansion (<a
href="https://redirect.github.com/node-cron/node-cron/issues/606">#606</a>)</li>
<li><a
href="https://github.com/node-cron/node-cron/commit/446f03ae8f366683c43b186b93bcba5091a00042"><code>446f03a</code></a>
fix: make concurrent background start() await the daemon and time out
coordin...</li>
<li><a
href="https://github.com/node-cron/node-cron/commit/88647a68ff6c1e651f0666ee7c45eeff7dcf697e"><code>88647a6</code></a>
docs: note DST fall-back behavior for sub-hourly schedules and the UTC
workar...</li>
<li><a
href="https://github.com/node-cron/node-cron/commit/196e6cd41ac32ab9df56668ac70e1b5232384bb8"><code>196e6cd</code></a>
fix: validate the cron expression when scheduling a task (<a
href="https://redirect.github.com/node-cron/node-cron/issues/603">#603</a>)</li>
<li><a
href="https://github.com/node-cron/node-cron/commit/7bd91d62d1472d52f9adbddfddc0c47458623080"><code>7bd91d6</code></a>
feat: emit task:failed when a background daemon exits unexpectedly (<a
href="https://redirect.github.com/node-cron/node-cron/issues/601">#601</a>)</li>
<li><a
href="https://github.com/node-cron/node-cron/commit/a10ae53626f1cc6e426e23266423f5e334a6871e"><code>a10ae53</code></a>
fix: expand inverted ranges with wrap-around instead of silently
swapping (<a
href="https://redirect.github.com/node-cron/node-cron/issues/602">#602</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/node-cron/node-cron/compare/v3.0.3...v4.6.0">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new
releaser for node-cron since your current version.</p>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nicolas Hrubec <nicolas.hrubec@outlook.com>1 parent 3b5bd78 commit b61dc7b
2 files changed
Lines changed: 5 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
86 | | - | |
| 86 | + | |
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20684 | 20684 | | |
20685 | 20685 | | |
20686 | 20686 | | |
20687 | | - | |
20688 | | - | |
20689 | | - | |
20690 | | - | |
20691 | | - | |
20692 | | - | |
| 20687 | + | |
| 20688 | + | |
| 20689 | + | |
| 20690 | + | |
20693 | 20691 | | |
20694 | 20692 | | |
20695 | 20693 | | |
| |||
0 commit comments