Compare commits

...

144 Commits

Author SHA1 Message Date
github-actions[bot]
d0827df60e chore(main): release 4.6.1 (#1322)
🤖 I have created a release *beep* *boop*
---


## [4.6.1](https://github.com/unraid/api/compare/v4.6.0...v4.6.1)
(2025-04-03)


### Bug Fixes

* don't mv deploy on prod release
([9568aab](9568aabd17))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-03 10:10:20 -04:00
Eli Bosley
9568aabd17 fix: don't mv deploy on prod release 2025-04-03 10:07:26 -04:00
github-actions[bot]
5a61aec841 chore(main): release 4.6.0 (#1311)
🤖 I have created a release *beep* *boop*
---


## [4.6.0](https://github.com/unraid/api/compare/v4.5.0...v4.6.0)
(2025-04-03)


### Features

* add gui settings field for sso users
([#1310](https://github.com/unraid/api/issues/1310))
([5ba3fa6](5ba3fa67a2))


### Bug Fixes

* build
([ed67af9](ed67af9568))
* **plugin:** flaky masking of benign warning during pnpm install
([#1313](https://github.com/unraid/api/issues/1313))
([1f10b63](1f10b63c8b))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-03 09:59:38 -04:00
Eli Bosley
ed67af9568 fix: build 2025-04-03 09:58:41 -04:00
Pujit Mehrotra
5ba3fa67a2 feat: add gui settings field for sso users (#1310)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Bulk SSO account management is now supported, allowing users to update
multiple SSO account IDs at once.
- Connect settings now include SSO account identifiers for streamlined
configuration.
- Expanded array management functionality introduces advanced operations
for managing disk arrays.
- New fields for SSO user IDs have been added to various settings and
queries.

- **Style & Documentation**
- Improved formatting and support for rich HTML in form descriptions
enhance clarity and presentation.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Eli Bosley <ekbosley@gmail.com>
2025-04-03 09:50:12 -04:00
Pujit Mehrotra
1f10b63c8b fix(plugin): flaky masking of benign warning during pnpm install (#1313)
The masking logic has a different effect in TTY and non-TTY environments
bc pnpm will change the `install` reporter. Now, we:

- set `--reporter=append-only` for consistency
- replace the grep loop with `sed` to mask and redirect the benign
"Ignored build scripts" warning

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Refactor**
- Streamlined the background logging during dependency installations to
improve overall efficiency and reduce complexity. This update enhances
maintainability without any visible changes to the user experience.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-04-03 09:20:55 -04:00
Zack Spear
df168224ea refactor: webgui sync script to copy uui build (#1318)
- enhances `pnpm sync-webgui-repo` to include Unraid UI build + sync
options
- changed the dev intended ThemeSwitcher to use local / session storage

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- The theme switcher now respects your saved preferences, ensuring a
more personalized interface.
- The component build and synchronization process has been enhanced with
new options for UI components and clearer feedback during operations.
- New computed properties added for better state management in account
and purchase functionalities.

- **Bug Fixes**
- Improved error handling and logging during the component build
process.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-04-03 09:17:21 -04:00
Pujit Mehrotra
3911be38bc chore: keep preview plg when merging release-please pr's (#1312)
prevents staging plugin from breaking due to being populated with prod entities

## Summary by CodeRabbit

- **Chores**
- Enhanced the deployment process to clearly distinguish between
production and preview releases.
- Added verification steps to ensure all required production assets are
present, improving the overall reliability of plugin updates.
2025-04-02 14:40:18 -04:00
github-actions[bot]
15153855f7 chore(main): release 4.5.0 (#1279)
🤖 I have created a release *beep* *boop*
---


## [4.5.0](https://github.com/unraid/api/compare/v4.4.1...v4.5.0)
(2025-04-02)


### Features

* add webgui theme switcher component
([#1304](https://github.com/unraid/api/issues/1304))
([e2d00dc](e2d00dc346))
* api plugin system & offline versioned dependency vendoring
([#1252](https://github.com/unraid/api/issues/1252))
([9f492bf](9f492bf217))
* **api:** add `unraid-api --delete` command
([#1289](https://github.com/unraid/api/issues/1289))
([2f09445](2f09445f2e))
* basic array controls
([#1291](https://github.com/unraid/api/issues/1291))
([61fe696](61fe6966ca))
* basic docker controls
([#1292](https://github.com/unraid/api/issues/1292))
([12eddf8](12eddf894e))
* copy to webgui repo script docs + wc build options
([#1285](https://github.com/unraid/api/issues/1285))
([e54f189](e54f189630))


### Bug Fixes

* additional url fixes
([4b2763c](4b2763c7f9))
* **api:** redirect benign pnpm postinstall warning to log file
([#1290](https://github.com/unraid/api/issues/1290))
([7fb7849](7fb78494cb))
* **deps:** update dependency chalk to v5
([#1296](https://github.com/unraid/api/issues/1296))
([6bed638](6bed63805f))
* **deps:** update dependency diff to v7
([#1297](https://github.com/unraid/api/issues/1297))
([3c6683c](3c6683c814))
* disable all config watchers
([#1306](https://github.com/unraid/api/issues/1306))
([5c1b435](5c1b4352cf))
* extract callbacks to library
([#1280](https://github.com/unraid/api/issues/1280))
([2266139](2266139742))
* OEM plugin issues ([#1288](https://github.com/unraid/api/issues/1288))
([d5a3d0d](d5a3d0dfac))
* replace files lost during pruning
([d0d2ff6](d0d2ff65ed))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-02 13:24:42 -04:00
Eli Bosley
65b7747c0e chore: remove flaky test 2025-04-02 13:16:17 -04:00
Eli Bosley
5c1b4352cf fix: disable all config watchers (#1306)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Updated CLI operations now use sequential stop and start actions for
service reloads and SSO user modifications, ensuring a more controlled
update process.
- Introduced a new `<uui-toaster>` component for notifications,
replacing the previous jGrowl notification system and enhancing user
experience.
- Added functionality for managing live updates based on window focus,
improving responsiveness during user interaction.

- **Refactor**
- Streamlined configuration updates by removing automatic monitoring,
resulting in a simpler update workflow.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-04-02 13:09:47 -04:00
Eli Bosley
9004313ff8 chore: lint to fix build 2025-04-02 12:23:20 -04:00
Eli Bosley
7a421ce4ec chore: fix dev console and allowed-headers 2025-04-02 11:28:21 -04:00
renovate[bot]
3c6683c814 fix(deps): update dependency diff to v7 (#1297)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [diff](https://redirect.github.com/kpdecker/jsdiff) | [`^5.1.0` ->
`^7.0.0`](https://renovatebot.com/diffs/npm/diff/5.2.0/7.0.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/diff/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/diff/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/diff/5.2.0/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/diff/5.2.0/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>kpdecker/jsdiff (diff)</summary>

###
[`v7.0.0`](https://redirect.github.com/kpdecker/jsdiff/blob/HEAD/release-notes.md#700)

[Compare
Source](https://redirect.github.com/kpdecker/jsdiff/compare/v6.0.0...7.0.0)

Just a single (breaking) bugfix, undoing a behaviour change introduced
accidentally in 6.0.0:

- [#&#8203;554](https://redirect.github.com/kpdecker/jsdiff/pull/554)
**`diffWords` treats numbers and underscores as word characters again.**
This behaviour was broken in v6.0.0.

###
[`v6.0.0`](https://redirect.github.com/kpdecker/jsdiff/blob/HEAD/release-notes.md#600)

[Compare
Source](https://redirect.github.com/kpdecker/jsdiff/compare/v5.2.0...v6.0.0)

This is a release containing many, *many* breaking changes. The
objective of this release was to carry out a mass fix, in one go, of all
the open bugs and design problems that required breaking changes to fix.
A substantial, but exhaustive, changelog is below.


[Commits](https://redirect.github.com/kpdecker/jsdiff/compare/v5.2.0...v6.0.0)

- [#&#8203;497](https://redirect.github.com/kpdecker/jsdiff/pull/497)
**`diffWords` behavior has been radically changed.** Previously, even
with `ignoreWhitespace: true`, runs of whitespace were tokens, which led
to unhelpful and unintuitive diffing behavior in typical texts.
Specifically, even when two texts contained overlapping passages,
`diffWords` would sometimes choose to delete all the words from the old
text and insert them anew in their new positions in order to avoid
having to delete or insert whitespace tokens. Whitespace sequences are
no longer tokens as of this release, which affects both the generated
diffs and the `count`s.

    Runs of whitespace are still tokens in `diffWordsWithSpace`.

As part of the changes to `diffWords`, **a new `.postProcess` method has
been added on the base `Diff` type**, which can be overridden in custom
`Diff` implementations.

**`diffLines` with `ignoreWhitespace: true` will no longer ignore the
insertion or deletion of entire extra lines of whitespace at the end of
the text**. Previously, these would not show up as insertions or
deletions, as a side effect of a hack in the base diffing algorithm
meant to help ignore whitespace in `diffWords`. More generally, **the
undocumented special handling in the core algorithm for ignored
terminals has been removed entirely.** (This special case behavior used
to rewrite the final two change objects in a scenario where the final
change object was an addition or deletion and its `value` was treated as
equal to the empty string when compared using the diff object's
`.equals` method.)

- [#&#8203;500](https://redirect.github.com/kpdecker/jsdiff/pull/500)
**`diffChars` now diffs Unicode code points** instead of UTF-16 code
units.

- [#&#8203;508](https://redirect.github.com/kpdecker/jsdiff/pull/508)
**`parsePatch` now always runs in what was previously "strict" mode; the
undocumented `strict` option has been removed.** Previously, by default,
`parsePatch` (and other patch functions that use it under the hood to
parse patches) would accept a patch where the line counts in the headers
were inconsistent with the actual patch content - e.g. where a hunk
started with the header `@@&#8203; -1,3 +1,6 @&#8203;@&#8203;`,
indicating that the content below spanned 3 lines in the old file and 6
lines in the new file, but then the actual content below the header
consisted of some different number of lines, say 10 lines of context, 5
deletions, and 1 insertion. Actually trying to work with these patches
using `applyPatch` or `merge`, however, would produce incorrect results
instead of just ignoring the incorrect headers, making this "feature"
more of a trap than something actually useful. It's been ripped out, and
now we are always "strict" and will reject patches where the line counts
in the headers aren't consistent with the actual patch content.

- [#&#8203;435](https://redirect.github.com/kpdecker/jsdiff/pull/435)
**Fix `parsePatch` handling of control characters.** `parsePatch` used
to interpret various unusual control characters - namely vertical tabs,
form feeds, lone carriage returns without a line feed, and EBCDIC NELs -
as line breaks when parsing a patch file. This was inconsistent with the
behavior of both JsDiff's own `diffLines` method and also the Unix
`diff` and `patch` utils, which all simply treat those control
characters as ordinary characters. The result of this discrepancy was
that some well-formed patches - produced either by `diff` or by JsDiff
itself and handled properly by the `patch` util - would be wrongly
parsed by `parsePatch`, with the effect that it would disregard the
remainder of a hunk after encountering one of these control characters.

- [#&#8203;439](https://redirect.github.com/kpdecker/jsdiff/pull/439)
**Prefer diffs that order deletions before insertions.** When faced with
a choice between two diffs with an equal total edit distance, the Myers
diff algorithm generally prefers one that does deletions before
insertions rather than insertions before deletions. For instance, when
diffing `abcd` against `acbd`, it will prefer a diff that says to delete
the `b` and then insert a new `b` after the `c`, over a diff that says
to insert a `c` before the `b` and then delete the existing `c`. JsDiff
deviated from the published Myers algorithm in a way that led to it
having the opposite preference in many cases, including that example.
This is now fixed, meaning diffs output by JsDiff will more accurately
reflect what the published Myers diff algorithm would output.

- [#&#8203;455](https://redirect.github.com/kpdecker/jsdiff/pull/455)
**The `added` and `removed` properties of change objects are now
guaranteed to be set to a boolean value.** (Previously, they would be
set to `undefined` or omitted entirely instead of setting them to
false.)

- [#&#8203;464](https://redirect.github.com/kpdecker/jsdiff/pull/464)
Specifying `{maxEditLength: 0}` now sets a max edit length of 0 instead
of no maximum.

- [#&#8203;460](https://redirect.github.com/kpdecker/jsdiff/pull/460)
**Added `oneChangePerToken` option.**

- [#&#8203;467](https://redirect.github.com/kpdecker/jsdiff/pull/467)
**Consistent ordering of arguments to `comparator(left, right)`.**
Values from the old array will now consistently be passed as the first
argument (`left`) and values from the new array as the second argument
(`right`). Previously this was almost (but not quite) always the other
way round.

- [#&#8203;480](https://redirect.github.com/kpdecker/jsdiff/pull/480)
**Passing `maxEditLength` to `createPatch` & `createTwoFilesPatch` now
works properly** (i.e. returns undefined if the max edit distance is
exceeded; previous behavior was to crash with a `TypeError` if the edit
distance was exceeded).

- [#&#8203;486](https://redirect.github.com/kpdecker/jsdiff/pull/486)
**The `ignoreWhitespace` option of `diffLines` behaves more sensibly
now.** `value`s in returned change objects now include leading/trailing
whitespace even when `ignoreWhitespace` is used, just like how with
`ignoreCase` the `value`s still reflect the case of one of the original
texts instead of being all-lowercase. `ignoreWhitespace` is also now
compatible with `newlineIsToken`. Finally, **`diffTrimmedLines` is
deprecated** (and removed from the docs) in favour of using `diffLines`
with `ignoreWhitespace: true`; the two are, and always have been,
equivalent.

- [#&#8203;490](https://redirect.github.com/kpdecker/jsdiff/pull/490)
**When calling diffing functions in async mode by passing a `callback`
option, the diff result will now be passed as the *first* argument to
the callback instead of the second.** (Previously, the first argument
was never used at all and would always have value `undefined`.)

- [#&#8203;489](redirect.github.com/kpdecker/jsdiff/pull/489)
**`this.options` no longer exists on `Diff` objects.** Instead,
`options` is now passed as an argument to methods that rely on options,
like `equals(left, right, options)`. This fixes a race condition in
async mode, where diffing behaviour could be changed mid-execution if a
concurrent usage of the same `Diff` instances overwrote its `options`.

- [#&#8203;518](https://redirect.github.com/kpdecker/jsdiff/pull/518)
**`linedelimiters` no longer exists** on patch objects; instead, when a
patch with Windows-style CRLF line endings is parsed, **the lines in
`lines` will end with `\r`**. There is now a **new
`autoConvertLineEndings` option, on by default**, which makes it so that
when a patch with Windows-style line endings is applied to a source file
with Unix style line endings, the patch gets autoconverted to use
Unix-style line endings, and when a patch with Unix-style line endings
is applied to a source file with Windows-style line endings, it gets
autoconverted to use Windows-style line endings.

- [#&#8203;521](https://redirect.github.com/kpdecker/jsdiff/pull/521)
**the `callback` option is now supported by `structuredPatch`,
`createPatch`, and `createTwoFilesPatch`**

- [#&#8203;529](https://redirect.github.com/kpdecker/jsdiff/pull/529)
**`parsePatch` can now parse patches where lines starting with `--` or
`++` are deleted/inserted**; previously, there were edge cases where the
parser would choke on valid patches or give wrong results.

- [#&#8203;530](https://redirect.github.com/kpdecker/jsdiff/pull/530)
**Added `ignoreNewlineAtEof` option to `diffLines`**

- [#&#8203;533](https://redirect.github.com/kpdecker/jsdiff/pull/533)
**`applyPatch` uses an entirely new algorithm for fuzzy matching.**
Differences between the old and new algorithm are as follows:
- The `fuzzFactor` now indicates the maximum [*Levenshtein*
distance](https://en.wikipedia.org/wiki/Levenshtein_distance) that there
can be between the context shown in a hunk and the actual file content
at a location where we try to apply the hunk. (Previously, it
represented a maximum [*Hamming*
distance](https://en.wikipedia.org/wiki/Hamming_distance), meaning that
a single insertion or deletion in the source file could stop a hunk from
applying even with a high `fuzzFactor`.)
- A hunk containing a deletion can now only be applied in a context
where the line to be deleted actually appears verbatim. (Previously, as
long as enough context lines in the hunk matched, `applyPatch` would
apply the hunk anyway and delete a completely different line.)
- The context line immediately before and immediately after an insertion
must match exactly between the hunk and the file for a hunk to apply.
(Previously this was not required.)

- [#&#8203;535](https://redirect.github.com/kpdecker/jsdiff/pull/535)
**A bug in patch generation functions is now fixed** that would
sometimes previously cause `\ No newline at end of file` to appear in
the wrong place in the generated patch, resulting in the patch being
invalid. **These invalid patches can also no longer be applied
successfully with `applyPatch`.** (It was already the case that tools
other than jsdiff, like GNU `patch`, would consider them malformed and
refuse to apply them; versions of jsdiff with this fix now do the same
thing if you ask them to apply a malformed patch emitted by jsdiff v5.)

- [#&#8203;535](https://redirect.github.com/kpdecker/jsdiff/pull/535)
**Passing `newlineIsToken: true` to *patch*-generation functions is no
longer allowed.** (Passing it to `diffLines` is still supported - it's
only functions like `createPatch` where passing `newlineIsToken` is now
an error.) Allowing it to be passed never really made sense, since in
cases where the option had any effect on the output at all, the effect
tended to be causing a garbled patch to be created that couldn't
actually be applied to the source file.

- [#&#8203;539](https://redirect.github.com/kpdecker/jsdiff/pull/539)
**`diffWords` now takes an optional `intlSegmenter` option** which
should be an `Intl.Segmenter` with word-level granularity. This provides
better tokenization of text into words than the default behaviour, even
for English but especially for some other languages for which the
default behaviour is poor.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [x] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-02 09:42:46 -04:00
renovate[bot]
6bed63805f fix(deps): update dependency chalk to v5 (#1296)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [chalk](https://redirect.github.com/chalk/chalk) | [`^4.1.2` ->
`^5.0.0`](https://renovatebot.com/diffs/npm/chalk/4.1.2/5.4.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/chalk/5.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/chalk/5.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/chalk/4.1.2/5.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/chalk/4.1.2/5.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>chalk/chalk (chalk)</summary>

###
[`v5.4.1`](https://redirect.github.com/chalk/chalk/releases/tag/v5.4.1)

[Compare
Source](https://redirect.github.com/chalk/chalk/compare/v5.4.0...v5.4.1)

- Fix `navigator` not defined `ReferenceError`
([#&#8203;642](https://redirect.github.com/chalk/chalk/issues/642))
[`4ebb62d`](https://redirect.github.com/chalk/chalk/commit/4ebb62d)

###
[`v5.4.0`](https://redirect.github.com/chalk/chalk/releases/tag/v5.4.0)

[Compare
Source](https://redirect.github.com/chalk/chalk/compare/v5.3.0...v5.4.0)

- Update `CIRCLECI` environments to return level 3 color support
[`f838120`](https://redirect.github.com/chalk/chalk/commit/f838120)

###
[`v5.3.0`](https://redirect.github.com/chalk/chalk/releases/tag/v5.3.0)

[Compare
Source](https://redirect.github.com/chalk/chalk/compare/v5.2.0...v5.3.0)

- Add `sideEffects` field to package.json
[`5aafc0a`](https://redirect.github.com/chalk/chalk/commit/5aafc0a)
- Add support for Gitea Actions
([#&#8203;603](https://redirect.github.com/chalk/chalk/issues/603))
[`29b8569`](https://redirect.github.com/chalk/chalk/commit/29b8569)

###
[`v5.2.0`](https://redirect.github.com/chalk/chalk/releases/tag/v5.2.0)

[Compare
Source](https://redirect.github.com/chalk/chalk/compare/v5.1.2...v5.2.0)

- Improve Deno compatibility
([#&#8203;579](https://redirect.github.com/chalk/chalk/issues/579))
[`7443e9f`](https://redirect.github.com/chalk/chalk/commit/7443e9f)
- Detect true-color support for GitHub Actions
([#&#8203;579](https://redirect.github.com/chalk/chalk/issues/579))
[`7443e9f`](https://redirect.github.com/chalk/chalk/commit/7443e9f)
- Detect true-color support for Kitty terminal
([#&#8203;579](https://redirect.github.com/chalk/chalk/issues/579))
[`7443e9f`](https://redirect.github.com/chalk/chalk/commit/7443e9f)
- Fix test for Azure DevOps environment
([#&#8203;579](https://redirect.github.com/chalk/chalk/issues/579))
[`7443e9f`](https://redirect.github.com/chalk/chalk/commit/7443e9f)

###
[`v5.1.2`](https://redirect.github.com/chalk/chalk/releases/tag/v5.1.2)

[Compare
Source](https://redirect.github.com/chalk/chalk/compare/v5.1.1...v5.1.2)

- Fix exported styles names
([#&#8203;569](https://redirect.github.com/chalk/chalk/issues/569))
[`a34bcf6`](https://redirect.github.com/chalk/chalk/commit/a34bcf6)

###
[`v5.1.1`](https://redirect.github.com/chalk/chalk/releases/tag/v5.1.1)

[Compare
Source](https://redirect.github.com/chalk/chalk/compare/v5.1.0...v5.1.1)

- Improved the names of exports introduced in 5.1.0
([#&#8203;567](https://redirect.github.com/chalk/chalk/issues/567))
[`6e0df05`](https://redirect.github.com/chalk/chalk/commit/6e0df05)
    -   We of course preserved the old names.

###
[`v5.1.0`](https://redirect.github.com/chalk/chalk/releases/tag/v5.1.0)

[Compare
Source](https://redirect.github.com/chalk/chalk/compare/v5.0.1...v5.1.0)

- Expose style names
([#&#8203;566](https://redirect.github.com/chalk/chalk/issues/566))
[`d7d7571`](https://redirect.github.com/chalk/chalk/commit/d7d7571)

###
[`v5.0.1`](https://redirect.github.com/chalk/chalk/releases/tag/v5.0.1)

[Compare
Source](https://redirect.github.com/chalk/chalk/compare/v5.0.0...v5.0.1)

- Add `main` field to package.json for backwards compatibility with some
developer tools
[`85f7e96`](https://redirect.github.com/chalk/chalk/commit/85f7e96)

###
[`v5.0.0`](https://redirect.github.com/chalk/chalk/releases/tag/v5.0.0)

[Compare
Source](https://redirect.github.com/chalk/chalk/compare/v4.1.2...v5.0.0)

##### Breaking

- **This package is now pure ESM. Please [read
this](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c).**
- If you use TypeScript, you need to use TypeScript 4.7 or later.
[Why.](https://redirect.github.com/microsoft/TypeScript/issues/46452)
- If you use a bundler, make sure it supports ESM and that you have
correctly configured it for ESM.
- The Chalk issue tracker is not a support channel for your favorite
build/bundler tool.
- It's totally fine to stay on Chalk v4. It's been stable for years.
- Require Node.js 12.20
[`fa16f4e`](https://redirect.github.com/chalk/chalk/commit/fa16f4e)
- Move some properties off the default export to individual named
exports:
    -   `chalk.Instance` → `Chalk`
    -   `chalk.supportsColor` → `supportsColor`
    -   `chalk.stderr` → `chalkStderr`
    -   `chalk.stderr.supportsColor` → `supportsColorStderr`
- Remove `.keyword()`, `.hsl()`, `.hsv()`, `.hwb()`, and `.ansi()`
coloring methods
([#&#8203;433](https://redirect.github.com/chalk/chalk/issues/433))
[`4cf2e40`](https://redirect.github.com/chalk/chalk/commit/4cf2e40)
- These were not commonly used and added a lot of bloat to Chalk. You
can achieve the same by using the [`color-convert`
package](https://redirect.github.com/Qix-/color-convert).
- The tagged template literal support moved into a separate package:
[`chalk-template`](https://redirect.github.com/chalk/chalk-template)
([#&#8203;524](https://redirect.github.com/chalk/chalk/issues/524))
[`c987c61`](https://redirect.github.com/chalk/chalk/commit/c987c61)

```diff
-import chalk from 'chalk';
+import chalkTemplate from 'chalk-template';

-chalk`2 + 3 = {bold ${2 + 3}}`;
+chalkTemplate`2 + 3 = {bold ${2 + 3}}`;
```

##### Improvements

- Bundle dependencies
[`04fdbd6`](https://redirect.github.com/chalk/chalk/commit/04fdbd6)
    -   This means Chalk no longer has any dependencies 🎉
- [The install size is less than half of
v4.](https://packagephobia.com/result?p=chalk)
- Add `overline` style
([#&#8203;433](https://redirect.github.com/chalk/chalk/issues/433))
[`4cf2e40`](https://redirect.github.com/chalk/chalk/commit/4cf2e40)
- Preserve function prototype methods
([#&#8203;434](https://redirect.github.com/chalk/chalk/issues/434))
[`0fba91b`](https://redirect.github.com/chalk/chalk/commit/0fba91b)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-02 09:40:22 -04:00
renovate[bot]
f7f40d7906 fix(deps): update all non-major dependencies (#1278)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@graphql-codegen/typescript-resolvers](https://redirect.github.com/dotansimha/graphql-code-generator)
([source](https://redirect.github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/plugins/typescript/resolvers))
| [`4.4.4` ->
`4.5.0`](https://renovatebot.com/diffs/npm/@graphql-codegen%2ftypescript-resolvers/4.4.4/4.5.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-codegen%2ftypescript-resolvers/4.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-codegen%2ftypescript-resolvers/4.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-codegen%2ftypescript-resolvers/4.4.4/4.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-codegen%2ftypescript-resolvers/4.4.4/4.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [lucide-vue-next](https://lucide.dev)
([source](https://redirect.github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-vue-next))
| [`^0.483.0` ->
`^0.487.0`](https://renovatebot.com/diffs/npm/lucide-vue-next/0.483.0/0.487.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/lucide-vue-next/0.487.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lucide-vue-next/0.487.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lucide-vue-next/0.483.0/0.487.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lucide-vue-next/0.483.0/0.487.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [pnpm](https://pnpm.io)
([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm)) |
[`10.6.5` ->
`10.7.1`](https://renovatebot.com/diffs/npm/pnpm/10.6.5/10.7.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/10.7.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/pnpm/10.7.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/pnpm/10.6.5/10.7.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/10.6.5/10.7.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[vuetify-nuxt-module](https://redirect.github.com/vuetifyjs/nuxt-module)
| [`0.18.4` ->
`0.18.5`](https://renovatebot.com/diffs/npm/vuetify-nuxt-module/0.18.4/0.18.5)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/vuetify-nuxt-module/0.18.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vuetify-nuxt-module/0.18.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vuetify-nuxt-module/0.18.4/0.18.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vuetify-nuxt-module/0.18.4/0.18.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>dotansimha/graphql-code-generator
(@&#8203;graphql-codegen/typescript-resolvers)</summary>

###
[`v4.5.0`](https://redirect.github.com/dotansimha/graphql-code-generator/blob/HEAD/packages/plugins/typescript/resolvers/CHANGELOG.md#450)

[Compare
Source](https://redirect.github.com/dotansimha/graphql-code-generator/compare/@graphql-codegen/typescript-resolvers@4.4.4...@graphql-codegen/typescript-resolvers@4.5.0)

##### Minor Changes

-
[#&#8203;10315](https://redirect.github.com/dotansimha/graphql-code-generator/pull/10315)
[`f6909d1`](f6909d1797)
Thanks [@&#8203;eddeee888](https://redirect.github.com/eddeee888)! -
Implement semanticNonNull custom directive

##### Patch Changes

- Updated dependencies
\[[`f6909d1`](f6909d1797)]:
-
[@&#8203;graphql-codegen/visitor-plugin-common](https://redirect.github.com/graphql-codegen/visitor-plugin-common)[@&#8203;5](https://redirect.github.com/5).8.0
-
[@&#8203;graphql-codegen/typescript](https://redirect.github.com/graphql-codegen/typescript)[@&#8203;4](https://redirect.github.com/4).1.6

</details>

<details>
<summary>lucide-icons/lucide (lucide-vue-next)</summary>

###
[`v0.487.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.487.0):
Version 0.487.0

[Compare
Source](https://redirect.github.com/lucide-icons/lucide/compare/0.486.0...0.487.0)

#### What's Changed

- feat(icons): added `spline-pointer` icon by
[@&#8203;Kaleidosium](https://redirect.github.com/Kaleidosium) in
[https://github.com/lucide-icons/lucide/pull/2932](https://redirect.github.com/lucide-icons/lucide/pull/2932)

#### New Contributors

- [@&#8203;Kaleidosium](https://redirect.github.com/Kaleidosium) made
their first contribution in
[https://github.com/lucide-icons/lucide/pull/2932](https://redirect.github.com/lucide-icons/lucide/pull/2932)

**Full Changelog**:
https://github.com/lucide-icons/lucide/compare/0.486.0...0.487.0

###
[`v0.486.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.486.0):
Version 0.486.0

[Compare
Source](https://redirect.github.com/lucide-icons/lucide/compare/0.485.0...0.486.0)

#### What's Changed

-
feat([@&#8203;lucide/astro](https://redirect.github.com/lucide/astro)):
add lucide package for Astro by
[@&#8203;MoustaphaDev](https://redirect.github.com/MoustaphaDev) in
[https://github.com/lucide-icons/lucide/pull/2665](https://redirect.github.com/lucide-icons/lucide/pull/2665)

#### New Contributors

- [@&#8203;MoustaphaDev](https://redirect.github.com/MoustaphaDev) made
their first contribution in
[https://github.com/lucide-icons/lucide/pull/2665](https://redirect.github.com/lucide-icons/lucide/pull/2665)

**Full Changelog**:
https://github.com/lucide-icons/lucide/compare/0.485.0...0.486.0

###
[`v0.485.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.485.0):
Version 0.485.0

[Compare
Source](https://redirect.github.com/lucide-icons/lucide/compare/0.484.0...0.485.0)

#### What's Changed

- feat(icons): added `banknote-arrow-down` icon by
[@&#8203;joffx](https://redirect.github.com/joffx) in
[https://github.com/lucide-icons/lucide/pull/2948](https://redirect.github.com/lucide-icons/lucide/pull/2948)
- feat(icons): added `banknote-x` icon by
[@&#8203;joffx](https://redirect.github.com/joffx) in
[https://github.com/lucide-icons/lucide/pull/2949](https://redirect.github.com/lucide-icons/lucide/pull/2949)

**Full Changelog**:
https://github.com/lucide-icons/lucide/compare/0.484.0...0.485.0

###
[`v0.484.0`](https://redirect.github.com/lucide-icons/lucide/releases/tag/0.484.0):
Version 0.484.0

[Compare
Source](https://redirect.github.com/lucide-icons/lucide/compare/0.483.0...0.484.0)

#### What's Changed

- build(deps): bump tj-actions/changed-files from 41 to 46 in
/.github/workflows by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/lucide-icons/lucide/pull/2920](https://redirect.github.com/lucide-icons/lucide/pull/2920)
- fix(packages): consistent icon name class by
[@&#8203;danteissaias](https://redirect.github.com/danteissaias) in
[https://github.com/lucide-icons/lucide/pull/2878](https://redirect.github.com/lucide-icons/lucide/pull/2878)
- feat(ci): add `x.com` to brand filter by
[@&#8203;jguddas](https://redirect.github.com/jguddas) in
[https://github.com/lucide-icons/lucide/pull/2939](https://redirect.github.com/lucide-icons/lucide/pull/2939)
- fix(icons): arcified candy & candy-off by
[@&#8203;karsa-mistmere](https://redirect.github.com/karsa-mistmere) in
[https://github.com/lucide-icons/lucide/pull/2944](https://redirect.github.com/lucide-icons/lucide/pull/2944)

#### New Contributors

- [@&#8203;danteissaias](https://redirect.github.com/danteissaias) made
their first contribution in
[https://github.com/lucide-icons/lucide/pull/2878](https://redirect.github.com/lucide-icons/lucide/pull/2878)

**Full Changelog**:
https://github.com/lucide-icons/lucide/compare/0.483.0...0.484.0

</details>

<details>
<summary>pnpm/pnpm (pnpm)</summary>

###
[`v10.7.1`](https://redirect.github.com/pnpm/pnpm/releases/tag/v10.7.1):
pnpm 10.7.1

[Compare
Source](https://redirect.github.com/pnpm/pnpm/compare/v10.7.0...v10.7.1)

#### Patch Changes

- `pnpm config set` should convert the settings to their correct type
before adding them to `pnpm-workspace.yaml`
[#&#8203;9355](https://redirect.github.com/pnpm/pnpm/issues/9355).
- `pnpm config get` should read auth related settings via npm CLI
[#&#8203;9345](https://redirect.github.com/pnpm/pnpm/issues/9345).
- Replace leading `~/` in a path in `.npmrc` with the home directory
[#&#8203;9217](https://redirect.github.com/pnpm/pnpm/issues/9217).

#### Platinum Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
<a href="https://bit.dev/?utm_source=pnpm&utm_medium=release_notes"
target="_blank"><img src="https://pnpm.io/img/users/bit.svg" width="80"
alt="Bit"></a>
      </td>
      <td align="center" valign="middle">
<a href="https://sanity.io/?utm_source=pnpm&utm_medium=release_notes"
target="_blank"><img src="https://pnpm.io/img/users/sanity.svg"
width="180" alt="Bit"></a>
      </td>
      <td align="center" valign="middle">
<a href="https://syntax.fm/?utm_source=pnpm&utm_medium=release_notes"
target="_blank">
          <picture>
<source media="(prefers-color-scheme: light)"
srcset="https://pnpm.io/img/users/syntaxfm.svg" />
<source media="(prefers-color-scheme: dark)"
srcset="https://pnpm.io/img/users/syntaxfm_light.svg" />
<img src="https://pnpm.io/img/users/syntaxfm.svg" width="90"
alt="Syntax" />
          </picture>
        </a>
      </td>
    </tr>
  </tbody>
</table>

#### Gold Sponsors

<table>
  <tbody>
    <tr>
      <td align="center" valign="middle">
<a href="https://discord.com/?utm_source=pnpm&utm_medium=release_notes"
target="_blank">
          <picture>
<source media="(prefers-color-scheme: light)"
srcset="https://pnpm.io/img/users/discord.svg" />
<source media="(prefers-color-scheme: dark)"
srcset="https://pnpm.io/img/users/discord_light.svg" />
<img src="https://pnpm.io/img/users/discord.svg" width="220"
alt="Discord" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
<a href="https://uscreen.de/?utm_source=pnpm&utm_medium=release_notes"
target="_blank">
          <picture>
<source media="(prefers-color-scheme: light)"
srcset="https://pnpm.io/img/users/uscreen.svg" />
<source media="(prefers-color-scheme: dark)"
srcset="https://pnpm.io/img/users/uscreen_light.svg" />
<img src="https://pnpm.io/img/users/uscreen.svg" width="180"
alt="u|screen" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
<a
href="https://www.jetbrains.com/?utm_source=pnpm&utm_medium=release_notes"
target="_blank">
          <picture>
<source media="(prefers-color-scheme: light)"
srcset="https://pnpm.io/img/users/jetbrains.svg" />
<source media="(prefers-color-scheme: dark)"
srcset="https://pnpm.io/img/users/jetbrains.svg" />
<img src="https://pnpm.io/img/users/jetbrains.svg" width="180"
alt="JetBrains" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
<a href="https://nx.dev/?utm_source=pnpm&utm_medium=release_notes"
target="_blank">
          <picture>
<source media="(prefers-color-scheme: light)"
srcset="https://pnpm.io/img/users/nx.svg?0" />
<source media="(prefers-color-scheme: dark)"
srcset="https://pnpm.io/img/users/nx_light.svg?0" />
<img src="https://pnpm.io/img/users/nx.svg" width="70" alt="Nx" />
          </picture>
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
<a
href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=release_notes"
target="_blank">
          <picture>
<source media="(prefers-color-scheme: light)"
srcset="https://pnpm.io/img/users/coderabbit.svg" />
<source media="(prefers-color-scheme: dark)"
srcset="https://pnpm.io/img/users/coderabbit_light.svg" />
<img src="https://pnpm.io/img/users/coderabbit.svg" width="220"
alt="CodeRabbit" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
<a href="https://route4me.com/?utm_source=pnpm&utm_medium=release_notes"
target="_blank">
<img src="https://pnpm.io/img/users/route4me.svg" width="220"
alt="Route4Me" />
        </a>
      </td>
    </tr>
    <tr>
      <td align="center" valign="middle">
<a href="https://workleap.com/?utm_source=pnpm&utm_medium=release_notes"
target="_blank">
          <picture>
<source media="(prefers-color-scheme: light)"
srcset="https://pnpm.io/img/users/workleap.svg" />
<source media="(prefers-color-scheme: dark)"
srcset="https://pnpm.io/img/users/workleap_light.svg" />
<img src="https://pnpm.io/img/users/workleap.svg" width="190"
alt="Workleap" />
          </picture>
        </a>
      </td>
      <td align="center" valign="middle">
<a
href="https://stackblitz.com/?utm_source=pnpm&utm_medium=release_notes"
target="_blank">
          <picture>
<source media="(prefers-color-scheme: light)"
srcset="https://pnpm.io/img/users/stackblitz.svg" />
<source media="(prefers-color-scheme: dark)"
srcset="https://pnpm.io/img/users/stackblitz_light.svg" />
<img src="https://pnpm.io/img/users/stackblitz.svg" width="190"
alt="Stackblitz" />
          </picture>
        </a>
      </td>
    </tr>
  </tbody>
</table>

###
[`v10.7.0`](https://redirect.github.com/pnpm/pnpm/blob/HEAD/pnpm/CHANGELOG.md#1070)

[Compare
Source](https://redirect.github.com/pnpm/pnpm/compare/v10.6.5...v10.7.0)

##### Minor Changes

- `pnpm config get` and `list` also show settings set in
`pnpm-workspace.yaml` files
[#&#8203;9316](https://redirect.github.com/pnpm/pnpm/pull/9316).

- It should be possible to use env variables in `pnpm-workspace.yaml`
setting names and value.

- Add an ability to patch dependencies by version ranges. Exact versions
override version ranges, which in turn override name-only patches.
Version range `*` is the same as name-only, except that patch
application failure will not be ignored.

    For example:

    ```yaml
    patchedDependencies:
      foo: patches/foo-1.patch
      foo@^2.0.0: patches/foo-2.patch
      foo@2.1.0: patches/foo-3.patch
    ```

The above configuration would apply `patches/foo-3.patch` to
`foo@2.1.0`, `patches/foo-2.patch` to all `foo` versions which satisfy
`^2.0.0` except `2.1.0`, and `patches/foo-1.patch` to the remaining
`foo` versions.

    > \[!WARNING]
> The version ranges should not overlap. If you want to specialize a sub
range, make sure to exclude it from the other keys. For example:
    >
    > ```yaml
    > # pnpm-workspace.yaml
    > patchedDependencies:
    >   # the specialized sub range
    >   'foo@2.2.0-2.8.0': patches/foo.2.2.0-2.8.0.patch
    >   # the more general patch, excluding the sub range above
    >   'foo@>=2.0.0 <2.2.0 || >2.8.0': 'patches/foo.gte2.patch
    > ```
    >
> In most cases, however, it's sufficient to just define an exact
version to override the range.

- `pnpm config set --location=project` saves the setting to a
`pnpm-workspace.yaml` file if no `.npmrc` file is present in the
directory
[#&#8203;9316](https://redirect.github.com/pnpm/pnpm/pull/9316).

- Rename `pnpm.allowNonAppliedPatches` to `pnpm.allowUnusedPatches`. The
old name is still supported but it would print a deprecation warning
message.

- Add `pnpm.ignorePatchFailures` to manage whether pnpm would ignore
patch application failures.

If `ignorePatchFailures` is not set, pnpm would throw an error when
patches with exact versions or version ranges fail to apply, and it
would ignore failures from name-only patches.

If `ignorePatchFailures` is explicitly set to `false`, pnpm would throw
an error when any type of patch fails to apply.

If `ignorePatchFailures` is explicitly set to `true`, pnpm would print a
warning when any type of patch fails to apply.

##### Patch Changes

- Remove dependency paths from audit output to prevent out-of-memory
errors
[#&#8203;9280](https://redirect.github.com/pnpm/pnpm/issues/9280).

</details>

<details>
<summary>vuetifyjs/nuxt-module (vuetify-nuxt-module)</summary>

###
[`v0.18.5`](https://redirect.github.com/vuetifyjs/nuxt-module/releases/tag/v0.18.5)

[Compare
Source](https://redirect.github.com/vuetifyjs/nuxt-module/compare/v0.18.4...v0.18.5)

#####    🐞 Bug Fixes

- **styles**: Resolve new scss component styles  -  by
[@&#8203;userquin](https://redirect.github.com/userquin) in
[https://github.com/vuetifyjs/nuxt-module/issues/305](https://redirect.github.com/vuetifyjs/nuxt-module/issues/305)
[<samp>(82139)</samp>](https://redirect.github.com/vuetifyjs/nuxt-module/commit/8213962)

#####     [View changes on
GitHub](https://redirect.github.com/vuetifyjs/nuxt-module/compare/v0.18.4...v0.18.5)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIyNy4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-04-02 09:40:11 -04:00
Zack Spear
e2d00dc346 feat: add webgui theme switcher component (#1304)
For now just used in Dev Mode to help assist in testing webgui CSS
changes.

- Introduced a new `UnraidThemeSwitcher` component to allow users to
change themes dynamically.
- Updated `nuxt.config.ts` to register the new component.
- Created `ThemeSwitcher.ce.vue` with functionality to handle theme
changes and update the UI accordingly.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced a theme switcher, allowing users to easily swap between
available application themes.
- Expanded the configuration to register the new theme switcher as a
custom element for seamless integration.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-04-01 14:13:42 -07:00
Pujit Mehrotra
48c6ad7afa chore: fix license badge & add community links (#1300)
shields.io couldn't "recognize" our license.md, so it's statically
generated now.

## Summary by CodeRabbit

- **Documentation**
- Revised the project description and updated the documentation URL for
clearer API guidance.
  - Enhanced visual presentation by centering project shields.
  - Added a new badge to highlight the use of Vite.
- Restructured contact information into a new "Community" section with
updated channels.
  - Updated licensing details to reflect the GPL-2.0 license.
2025-03-31 16:22:26 -04:00
Eli Bosley
12eddf894e feat: basic docker controls (#1292)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Updated configuration settings by resetting various parameters to
default values.
	- Enhanced module integration with new Docker components.
- **New Features**
	- Introduced GraphQL API endpoints to start and stop Docker containers.
	- Added a backend service to manage Docker container operations.
- **Tests**
- Expanded test suites covering Docker resolvers and service methods to
ensure reliable container management.
- **Refactor**
- Consolidated code imports and streamlined internal calls for clearer
structure.
	- Enhanced type safety for Docker container retrieval parameters.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-03-31 16:21:06 -04:00
Eli Bosley
61fe6966ca feat: basic array controls (#1291)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Expanded API operations for array management, including new mutations
for state changes and disk handling.
- Introduced new enumeration and input types for managing array states
in the GraphQL schema.
- Added a new resolver for handling array mutations in the GraphQL API.

- **Chores**
- Upgraded configuration version to 4.4.1 and refined connectivity
status reporting.

- **Refactor**
- Streamlined request processing with improved error handling to provide
clearer feedback on connectivity issues.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-31 15:47:33 -04:00
renovate[bot]
b4c8efa483 fix(deps): update dependency ignore to v7 (#1299)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [ignore](https://redirect.github.com/kaelzhang/node-ignore) |
[`^5.2.4` ->
`^7.0.0`](https://renovatebot.com/diffs/npm/ignore/5.3.2/7.0.3) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/ignore/7.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/ignore/7.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/ignore/5.3.2/7.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/ignore/5.3.2/7.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>kaelzhang/node-ignore (ignore)</summary>

###
[`v7.0.3`](52f8e855b6...7.0.3)

[Compare
Source](52f8e855b6...7.0.3)

###
[`v7.0.2`](https://redirect.github.com/kaelzhang/node-ignore/compare/7.0.1...52f8e855b6aca711579c008f38829f48e5a4c78b)

[Compare
Source](https://redirect.github.com/kaelzhang/node-ignore/compare/7.0.1...52f8e855b6aca711579c008f38829f48e5a4c78b)

###
[`v7.0.1`](https://redirect.github.com/kaelzhang/node-ignore/compare/7.0.0...7.0.1)

[Compare
Source](https://redirect.github.com/kaelzhang/node-ignore/compare/7.0.0...7.0.1)

###
[`v7.0.0`](https://redirect.github.com/kaelzhang/node-ignore/releases/tag/7.0.0)

[Compare
Source](ee70c66d32...7.0.0)

#### Minor feature

The primary feature introduced by `7.0.0` is the `.checkIgnore()`
method, which is most equivalent to `git check-ignore -v`. And also it
allows to pass `{pattern, mark?}` as the parameter of `.add()` so that
we could imitate the mechanism of `git check-ignore` as:

```js
ig.add({
  pattern: 'foo/*',
  mark: '60'
})

const {
  ignored,
  rule
} = checkIgnore('foo/')

if (ignored) {
  console.log(`.gitignore:${result}:${rule.mark}:${rule.pattern} foo/`)
}

// .gitignore:60:foo/* foo/
```

#### Potential Incompatibilities

The only situation that `7.0.0` might bring incompatibility is to
`.add()` a `< 7.0.0` instance into a `>= 7.0.0` instance, which might
occur when the current workspace has multiple `node-ignore` versions
installed, please be careful.

```js
const {anotherIgnoreInstance} = require('./ignore-6.0-instance')

// A 7.0.0 instance
ignore().add(anotherIgnoreInstance)

// It will break your code
```

Otherwise, in most cases, if you never do something above or there is
only one version of `node-ignore` installed in the current workspace, it
is quite safe to upgrade to `7.0.0`.

###
[`v6.0.2`](https://redirect.github.com/kaelzhang/node-ignore/compare/6.0.1...ee70c66d32e900f6e793c733a4ca27a1dafb3819)

[Compare
Source](https://redirect.github.com/kaelzhang/node-ignore/compare/6.0.1...ee70c66d32e900f6e793c733a4ca27a1dafb3819)

###
[`v6.0.1`](https://redirect.github.com/kaelzhang/node-ignore/releases/tag/6.0.1):
6.x (&#x3D;&#x3D; 5.3.2)

[Compare
Source](https://redirect.github.com/kaelzhang/node-ignore/compare/6.0.0...6.0.1)

### 6.x

-   The release of `6.x` is due to a mistake.
- Making an upgrade from `5.x` to 6.x for now actually changes nothing
and does no harm, everyone could just upgrade or ignore the version.
    -   Actually `6.0.2` is `5.3.2`
-   The next major release will be `7.0.0`

###
[`v6.0.0`](https://redirect.github.com/kaelzhang/node-ignore/compare/5.3.2...6.0.0)

[Compare
Source](https://redirect.github.com/kaelzhang/node-ignore/compare/5.3.2...6.0.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-31 15:38:37 -04:00
Eli Bosley
dc9d5ad661 chore: fix license path in readme 2025-03-31 15:16:05 -04:00
Pujit Mehrotra
4964cf557b chore: update license fields in package.json (#1298)
Sets license for all node.js packages to `GPL-2.0-or-later`

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Chores**
- Simplified license compliance verification by removing legacy script
logic.
- Updated licensing terms across components to GPL-2.0-or-later for
broader compatibility.
- **Documentation**
- Revised setup instructions to indicate that the use of the Just build
tool is now optional.
- **New Features**
- Added fallback support in the build automation tool to ensure smoother
operations when targets are missing.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-31 14:52:49 -04:00
Zack Spear
e54f189630 feat: copy to webgui repo script docs + wc build options (#1285)
Previously the historical script only use to copy built web components
into the webgui repo.

The new script provides additional commands to find files in the API
repo's plugin dir and attempts to find "new" files. Then a command to
act upon each of these new file to sync in either direction, skip it, or
ignore it.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced an interactive synchronization tool that streamlines file
transfers between projects.
- Added a new command to easily trigger the synchronization process,
leveraging enhanced file management and notification capabilities.

- **Chores**
- Updated version control settings to ignore temporary synchronization
files.
  - Removed an outdated file copying script for improved maintenance.
  - Added new dependencies to support enhanced functionality.
- Modified a script to exclude specific files from deletion during the
activation code setup process.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-31 14:36:33 -04:00
Pujit Mehrotra
9f7218da79 chore: update license to GPL-2.0-or-later (#1295)
to accomodate GPL-3.0 based dependencies.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Documentation**
- Revised licensing documentation to clearly state that the project is
distributed under GNU GPL v2 (or later) with complete terms provided.
- **Chores**
  - Updated overall license declarations to a more flexible version.
- Introduced new compliance tools to automatically verify that
dependency licenses meet the accepted criteria.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-31 14:34:33 -04:00
Eli Bosley
d5a3d0dfac fix: OEM plugin issues (#1288)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- The file synchronization tool now requires an explicitly defined
destination and offers a new option to remove remote password files
before syncing. Additionally, synchronization now omits ownership,
group, and permission metadata for smoother transfers.
- The activation flow has been refined, with legacy authentication
modifications removed to deliver a cleaner welcome modal experience.
- A new variable has been introduced to enhance server state management.

- **Refactor**
- Internal configuration adjustments have been made to enhance component
delivery and streamline system actions.

- **Bug Fixes**
- Updated handling of remote user and host parameters in the
synchronization script for improved functionality.
- Simplified the activation code removal process by focusing solely on
the `.set-password.php` file restoration.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Zack Spear <hi@zackspear.com>
2025-03-28 16:39:15 -04:00
Pujit Mehrotra
2266139742 fix: extract callbacks to library (#1280)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
  - Updated environment configuration to enhance secure handling.
  - Integrated a shared dependency for consistent callback management.

- **Refactor**
  - Streamlined callback actions management for improved performance.
- Upgraded the operating system version from a beta release to stable
(7.0.0), delivering enhanced reliability.
- Centralized callback actions store usage across components for better
state management.
- Removed deprecated callback management code to improve clarity and
maintainability.

- **New Features**
- Introduced a new redirect component to enhance user navigation
experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Eli Bosley <ekbosley@gmail.com>
Co-authored-by: Zack Spear <hi@zackspear.com>
2025-03-28 16:11:29 -04:00
Pujit Mehrotra
7fb78494cb fix(api): redirect benign pnpm postinstall warning to log file (#1290)
which lives at `/var/log/unraid-api/build-scripts.log`
2025-03-28 13:50:41 -04:00
Pujit Mehrotra
2f09445f2e feat(api): add unraid-api --delete command (#1289)
- Added a `command:raw` package.json script to let devs run `dist/cli.js` without rebuilding, enabling experimentation in the transpiled script.
- `unraid-api --delete` allows users to select and remove keys with confirmation
prompts.
2025-03-28 10:17:22 -04:00
Eli Bosley
fa6a5c56b6 chore: update ranging strategy for renovate (#1286)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Updated the dependency update configuration to adopt a replace
strategy for version ranges, ensuring smoother and clearer version
management.
- Added a new dependency, `@unraid/shared-callbacks`, for enhanced
functionality.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-28 10:12:07 -04:00
Eli Bosley
234017a828 chore: add self to work intent template 2025-03-27 17:12:32 -04:00
Eli Bosley
0210b9e62e chore: wrong charactrer 2025-03-27 17:11:17 -04:00
Eli Bosley
4b2763c7f9 fix: additional url fixes 2025-03-27 17:10:51 -04:00
Eli Bosley
ed44796d5d Update readme.md 2025-03-27 17:07:49 -04:00
Pujit Mehrotra
d23a89f0b3 chore: re-add .env.staging in api 2025-03-27 16:01:38 -04:00
Pujit Mehrotra
d0d2ff65ed fix: replace files lost during pruning 2025-03-27 15:47:29 -04:00
Pujit Mehrotra
9f492bf217 feat: api plugin system & offline versioned dependency vendoring (#1252)
- **New Features**
- Created a dynamic plugin system for the API to enable community
augmentation of GraphQL, CLI, and Cron functionalities capabilities.
- Included an example plugin under `packages/unraid-api-plugin-health`
that adds a new graphql query for API health checks.
- Added `rc.unraid-api` commands for backing up, restoring, and
installing production dependencies, streamlining maintenance and
deployment.
- Improved dependency vendoring by bundling a versioned pnpm store
(instead of `node_modules`). Versioning will allow users to add plugins
to a specific api release without requiring an internet connection on
subsequent reboots.

- **Chores**
- Upgraded build workflows and versioning processes to ensure more
reliable artifact handling and production packaging.
2025-03-27 13:23:55 -04:00
github-actions[bot]
c4b4d26af0 chore(main): release 4.4.1 (#1270)
🤖 I have created a release *beep* *boop*
---


## [4.4.1](https://github.com/unraid/api/compare/v4.4.0...v4.4.1)
(2025-03-26)


### Bug Fixes

* .env.production from allowing console logs on build
([#1273](https://github.com/unraid/api/issues/1273))
([49f6365](49f636541b))
* patch version override logic incorrect
([#1275](https://github.com/unraid/api/issues/1275))
([0bcfb47](0bcfb47bbc))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-26 20:01:06 -04:00
Eli Bosley
0bcfb47bbc fix: patch version override logic incorrect (#1275)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Bug Fixes**
- Improved the system’s version update mechanism so that updates are
applied only when the current system version matches the expected
version. This enhancement ensures more consistent and reliable version
checks during the update process.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-26 17:57:30 -04:00
Michael Datelle
b0099421f3 refactor: swap out radix with reka (#1271)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Refactor**
- Improved type safety and consistency across UI components by
leveraging centralized type definitions.

- **Chores**
- Updated and consolidated UI component dependencies by migrating from a
previous library to a new one and refining package configurations.

- **Style**
- Standardized code formatting for uniform syntax and improved
readability.

- **Tests**
- Expanded testing configuration to include additional file types for
enhanced test coverage.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: mdatelle <mike@datelle.net>
2025-03-26 14:56:43 -04:00
Zack Spear
49f636541b fix: .env.production from allowing console logs on build (#1273)
`VITE_ALLOW_CONSOLE_LOGS` should not be present in `.env.production`. We
don't want basic debugs logs in prod.

Found this because the latest OS release `7.1.0-beta.1.6` which included
the latest web components had debug logs included.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Chores**
- Disabled non-essential console logging in the production environment
for a cleaner runtime experience.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-26 09:16:14 -04:00
github-actions[bot]
419c794e03 chore(main): release 4.4.0 (#1241)
🤖 I have created a release *beep* *boop*
---


## [4.4.0](https://github.com/unraid/api/compare/v4.3.1...v4.4.0)
(2025-03-25)


### Features

* add ReplaceKey functionality to plugin
([#1264](https://github.com/unraid/api/issues/1264))
([7e6be67](7e6be67f61))
* downgrade page replace key check
([#1263](https://github.com/unraid/api/issues/1263))
([6a92f61](6a92f61f1a))
* make log viewer component dynamic
([#1242](https://github.com/unraid/api/issues/1242))
([a356bf0](a356bf03fb))
* ReplaceKey functionality in Registration and Update pages
([#1246](https://github.com/unraid/api/issues/1246))
([f3e6a00](f3e6a0011e))
* UnraidCheckExec for Check OS Updates via UPC dropdown
([#1265](https://github.com/unraid/api/issues/1265))
([3a20930](3a20930ead))


### Bug Fixes

* **deps:** update all non-major dependencies
([#1236](https://github.com/unraid/api/issues/1236))
([9d63e56](9d63e56374))
* **deps:** update all non-major dependencies
([#1247](https://github.com/unraid/api/issues/1247))
([57a6c49](57a6c49f8a))
* **deps:** update all non-major dependencies
([#1251](https://github.com/unraid/api/issues/1251))
([ad3906e](ad3906e682))
* **deps:** update all non-major dependencies
([#1253](https://github.com/unraid/api/issues/1253))
([bbb02e9](bbb02e991c))
* **deps:** update dependency @nestjs/passport to v11
([#1244](https://github.com/unraid/api/issues/1244))
([9e54237](9e54237670))
* **deps:** update dependency graphql-subscriptions to v3
([#1209](https://github.com/unraid/api/issues/1209))
([c9789ac](c9789ac1f2))
* **deps:** update dependency ini to v5
([#1217](https://github.com/unraid/api/issues/1217))
([590ab73](590ab7327f))
* **deps:** update dependency jose to v6
([#1248](https://github.com/unraid/api/issues/1248))
([03ece33](03ece335b8))
* **deps:** update dependency marked to v15
([#1249](https://github.com/unraid/api/issues/1249))
([8f78b3f](8f78b3f1ca))
* **deps:** update dependency pino-pretty to v13
([#1250](https://github.com/unraid/api/issues/1250))
([1892e23](1892e23c22))
* **deps:** update dependency pm2 to v6
([#1258](https://github.com/unraid/api/issues/1258))
([d8afc8f](d8afc8f4c9))
* **deps:** update dependency shadcn-vue to v1
([#1259](https://github.com/unraid/api/issues/1259))
([cb2020d](cb2020dee6))
* **deps:** update dependency vue-i18n to v11
([#1261](https://github.com/unraid/api/issues/1261))
([2c01ba9](2c01ba9610))
* **deps:** update vueuse monorepo to v13 (major)
([#1262](https://github.com/unraid/api/issues/1262))
([9ce10a7](9ce10a72b2))
* make scripts executable when building the plugin
([#1255](https://github.com/unraid/api/issues/1255))
([7bc9949](7bc9949110))
* node installation not persisting across reboots
([#1256](https://github.com/unraid/api/issues/1256))
([3bfcc8e](3bfcc8e8c0))
* update configValid state to ineligible in var.ini and adjust rel…
([#1268](https://github.com/unraid/api/issues/1268))
([cc85fba](cc85fba207))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-25 09:43:58 -04:00
renovate[bot]
bbb02e991c fix(deps): update all non-major dependencies (#1253)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@apollo/client](https://www.apollographql.com/docs/react/)
([source](https://redirect.github.com/apollographql/apollo-client)) |
[`3.13.4` ->
`3.13.5`](https://renovatebot.com/diffs/npm/@apollo%2fclient/3.13.4/3.13.5)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@apollo%2fclient/3.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@apollo%2fclient/3.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@apollo%2fclient/3.13.4/3.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@apollo%2fclient/3.13.4/3.13.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@eslint/js](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint/tree/HEAD/packages/js))
| [`9.22.0` ->
`9.23.0`](https://renovatebot.com/diffs/npm/@eslint%2fjs/9.22.0/9.23.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@eslint%2fjs/9.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@eslint%2fjs/9.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@eslint%2fjs/9.22.0/9.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@eslint%2fjs/9.22.0/9.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@nestjs/apollo](https://redirect.github.com/nestjs/graphql) |
[`13.0.3` ->
`13.0.4`](https://renovatebot.com/diffs/npm/@nestjs%2fapollo/13.0.3/13.0.4)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fapollo/13.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fapollo/13.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fapollo/13.0.3/13.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fapollo/13.0.3/13.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@nestjs/common](https://nestjs.com)
([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/common))
| [`11.0.11` ->
`11.0.12`](https://renovatebot.com/diffs/npm/@nestjs%2fcommon/11.0.11/11.0.12)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcommon/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcommon/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcommon/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcommon/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@nestjs/core](https://nestjs.com)
([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/core))
| [`11.0.11` ->
`11.0.12`](https://renovatebot.com/diffs/npm/@nestjs%2fcore/11.0.11/11.0.12)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcore/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcore/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcore/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcore/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@nestjs/graphql](https://redirect.github.com/nestjs/graphql) |
[`13.0.3` ->
`13.0.4`](https://renovatebot.com/diffs/npm/@nestjs%2fgraphql/13.0.3/13.0.4)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fgraphql/13.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fgraphql/13.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fgraphql/13.0.3/13.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fgraphql/13.0.3/13.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@nestjs/platform-fastify](https://nestjs.com)
([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-fastify))
| [`11.0.11` ->
`11.0.12`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-fastify/11.0.11/11.0.12)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-fastify/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-fastify/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-fastify/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-fastify/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@nestjs/testing](https://nestjs.com)
([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/testing))
| [`11.0.11` ->
`11.0.12`](https://renovatebot.com/diffs/npm/@nestjs%2ftesting/11.0.11/11.0.12)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2ftesting/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2ftesting/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2ftesting/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2ftesting/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@nuxt/devtools](https://devtools.nuxt.com)
([source](https://redirect.github.com/nuxt/devtools/tree/HEAD/packages/devtools))
| [`2.3.0` ->
`2.3.1`](https://renovatebot.com/diffs/npm/@nuxt%2fdevtools/2.3.0/2.3.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nuxt%2fdevtools/2.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nuxt%2fdevtools/2.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nuxt%2fdevtools/2.3.0/2.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nuxt%2fdevtools/2.3.0/2.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@rollup/rollup-linux-x64-gnu](https://rollupjs.org/)
([source](https://redirect.github.com/rollup/rollup)) | [`4.36.0` ->
`4.37.0`](https://renovatebot.com/diffs/npm/@rollup%2frollup-linux-x64-gnu/4.36.0/4.37.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@rollup%2frollup-linux-x64-gnu/4.37.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@rollup%2frollup-linux-x64-gnu/4.37.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@rollup%2frollup-linux-x64-gnu/4.36.0/4.37.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@rollup%2frollup-linux-x64-gnu/4.36.0/4.37.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/addon-essentials](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/essentials)
([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/essentials))
| [`8.6.7` ->
`8.6.9`](https://renovatebot.com/diffs/npm/@storybook%2faddon-essentials/8.6.7/8.6.9)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-essentials/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-essentials/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-essentials/8.6.7/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-essentials/8.6.7/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/addon-interactions](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/interactions)
([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions))
| [`8.6.7` ->
`8.6.9`](https://renovatebot.com/diffs/npm/@storybook%2faddon-interactions/8.6.7/8.6.9)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-interactions/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-interactions/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-interactions/8.6.7/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-interactions/8.6.7/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/addon-links](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/links)
([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/links))
| [`8.6.7` ->
`8.6.9`](https://renovatebot.com/diffs/npm/@storybook%2faddon-links/8.6.7/8.6.9)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-links/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-links/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-links/8.6.7/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-links/8.6.7/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/builder-vite](https://redirect.github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme)
([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/builders/builder-vite))
| [`8.6.7` ->
`8.6.9`](https://renovatebot.com/diffs/npm/@storybook%2fbuilder-vite/8.6.7/8.6.9)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2fbuilder-vite/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2fbuilder-vite/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2fbuilder-vite/8.6.7/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2fbuilder-vite/8.6.7/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@storybook/vue3-vite](https://redirect.github.com/storybookjs/storybook/tree/next/code/frameworks/vue3-vite)
([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/frameworks/vue3-vite))
| [`8.6.7` ->
`8.6.9`](https://renovatebot.com/diffs/npm/@storybook%2fvue3-vite/8.6.7/8.6.9)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2fvue3-vite/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2fvue3-vite/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2fvue3-vite/8.6.7/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2fvue3-vite/8.6.7/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@swc/core](https://swc.rs)
([source](https://redirect.github.com/swc-project/swc)) | [`1.11.11` ->
`1.11.13`](https://renovatebot.com/diffs/npm/@swc%2fcore/1.11.11/1.11.13)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@swc%2fcore/1.11.13?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@swc%2fcore/1.11.13?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@swc%2fcore/1.11.11/1.11.13?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@swc%2fcore/1.11.11/1.11.13?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@types/diff](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/diff)
([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/diff))
| [`7.0.1` ->
`7.0.2`](https://renovatebot.com/diffs/npm/@types%2fdiff/7.0.1/7.0.2) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fdiff/7.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fdiff/7.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fdiff/7.0.1/7.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fdiff/7.0.1/7.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node))
| [`22.13.10` ->
`22.13.13`](https://renovatebot.com/diffs/npm/@types%2fnode/22.13.10/22.13.13)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/22.13.13?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/22.13.13?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/22.13.10/22.13.13?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/22.13.10/22.13.13?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [eslint](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint)) | [`9.22.0` ->
`9.23.0`](https://renovatebot.com/diffs/npm/eslint/9.22.0/9.23.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/9.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint/9.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint/9.22.0/9.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/9.22.0/9.23.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[eslint-plugin-prettier](https://redirect.github.com/prettier/eslint-plugin-prettier)
| [`5.2.3` ->
`5.2.5`](https://renovatebot.com/diffs/npm/eslint-plugin-prettier/5.2.3/5.2.5)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-prettier/5.2.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-prettier/5.2.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-prettier/5.2.3/5.2.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-prettier/5.2.3/5.2.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [graphql-scalars](https://redirect.github.com/Urigo/graphql-scalars) |
[`1.24.1` ->
`1.24.2`](https://renovatebot.com/diffs/npm/graphql-scalars/1.24.1/1.24.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/graphql-scalars/1.24.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/graphql-scalars/1.24.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/graphql-scalars/1.24.1/1.24.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/graphql-scalars/1.24.1/1.24.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [nestjs-pino](https://redirect.github.com/iamolegga/nestjs-pino) |
[`4.3.1` ->
`4.4.0`](https://renovatebot.com/diffs/npm/nestjs-pino/4.3.1/4.4.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/nestjs-pino/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nestjs-pino/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nestjs-pino/4.3.1/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nestjs-pino/4.3.1/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [nuxt](https://nuxt.com)
([source](https://redirect.github.com/nuxt/nuxt/tree/HEAD/packages/nuxt))
| [`3.16.0` ->
`3.16.1`](https://renovatebot.com/diffs/npm/nuxt/3.16.0/3.16.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/nuxt/3.16.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nuxt/3.16.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nuxt/3.16.0/3.16.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nuxt/3.16.0/3.16.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [reka-ui](https://redirect.github.com/unovue/reka-ui) | [`2.1.0` ->
`2.1.1`](https://renovatebot.com/diffs/npm/reka-ui/2.1.0/2.1.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/reka-ui/2.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/reka-ui/2.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/reka-ui/2.1.0/2.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/reka-ui/2.1.0/2.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[storybook](https://redirect.github.com/storybookjs/storybook/tree/next/code/lib/cli)
([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/lib/cli))
| [`8.6.7` ->
`8.6.9`](https://renovatebot.com/diffs/npm/storybook/8.6.7/8.6.9) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/storybook/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/storybook/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/storybook/8.6.7/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/storybook/8.6.7/8.6.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[typescript-eslint](https://typescript-eslint.io/packages/typescript-eslint)
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint))
| [`8.26.1` ->
`8.28.0`](https://renovatebot.com/diffs/npm/typescript-eslint/8.26.1/8.28.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/typescript-eslint/8.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typescript-eslint/8.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typescript-eslint/8.26.1/8.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript-eslint/8.26.1/8.28.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vite](https://vite.dev)
([source](https://redirect.github.com/vitejs/vite/tree/HEAD/packages/vite))
| [`6.2.2` ->
`6.2.3`](https://renovatebot.com/diffs/npm/vite/6.2.2/6.2.3) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vite/6.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/6.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/6.2.2/6.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/6.2.2/6.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vitest](https://redirect.github.com/vitest-dev/vitest)
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest))
| [`3.0.7` ->
`3.0.9`](https://renovatebot.com/diffs/npm/vitest/3.0.7/3.0.9) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/3.0.7/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/3.0.7/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vuetify](https://vuetifyjs.com)
([source](https://redirect.github.com/vuetifyjs/vuetify/tree/HEAD/packages/vuetify))
| [`3.7.17` ->
`3.7.18`](https://renovatebot.com/diffs/npm/vuetify/3.7.17/3.7.18) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vuetify/3.7.18?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vuetify/3.7.18?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vuetify/3.7.17/3.7.18?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vuetify/3.7.17/3.7.18?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [zx](https://google.github.io/zx/)
([source](https://redirect.github.com/google/zx)) | [`8.3.2` ->
`8.4.1`](https://renovatebot.com/diffs/npm/zx/8.3.2/8.4.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/zx/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/zx/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/zx/8.3.2/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/zx/8.3.2/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>apollographql/apollo-client (@&#8203;apollo/client)</summary>

###
[`v3.13.5`](https://redirect.github.com/apollographql/apollo-client/blob/HEAD/CHANGELOG.md#3135)

[Compare
Source](https://redirect.github.com/apollographql/apollo-client/compare/v3.13.4...v3.13.5)

##### Patch Changes

-
[#&#8203;12461](https://redirect.github.com/apollographql/apollo-client/pull/12461)
[`12c8d06`](12c8d06f1e)
Thanks [@&#8203;jerelmiller](https://redirect.github.com/jerelmiller)! -
Fix an issue where a `cache-first` query would return the result for
previous variables when a cache update is issued after simultaneously
changing variables and skipping the query.

</details>

<details>
<summary>eslint/eslint (@&#8203;eslint/js)</summary>

###
[`v9.23.0`](https://redirect.github.com/eslint/eslint/compare/v9.22.0...20591c49ff27435b1555111a929a6966febc249f)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.22.0...v9.23.0)

</details>

<details>
<summary>nestjs/graphql (@&#8203;nestjs/apollo)</summary>

###
[`v13.0.4`](https://redirect.github.com/nestjs/graphql/releases/tag/v13.0.4)

[Compare
Source](https://redirect.github.com/nestjs/graphql/compare/v13.0.3...v13.0.4)

##### 13.0.4 (2025-03-24)

##### Enhancements

-   `graphql`
- [#&#8203;3503](https://redirect.github.com/nestjs/graphql/pull/3503)
feat(graphql): add support for transforming the resolvers
([@&#8203;JoshVee](https://redirect.github.com/JoshVee))

##### Dependencies

-   `graphql`
- [#&#8203;3487](https://redirect.github.com/nestjs/graphql/pull/3487)
fix(deps): update dependency ws to v8.18.1
([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
- [#&#8203;3488](https://redirect.github.com/nestjs/graphql/pull/3488)
fix(deps): update graphql-tools monorepo
([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))
-   `mercurius`
- [#&#8203;3494](https://redirect.github.com/nestjs/graphql/pull/3494)
chore(deps): update dependency mercurius to v16.1.0
([@&#8203;renovate\[bot\]](https://redirect.github.com/apps/renovate))

##### Committers: 1

- Josh Vawdrey ([@&#8203;JoshVee](https://redirect.github.com/JoshVee))

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/common)</summary>

###
[`v11.0.12`](https://redirect.github.com/nestjs/nest/compare/v11.0.11...c58f49a3cc7b48916a98dcb81764ce77950d535a)

[Compare
Source](https://redirect.github.com/nestjs/nest/compare/v11.0.11...v11.0.12)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/core)</summary>

###
[`v11.0.12`](https://redirect.github.com/nestjs/nest/compare/v11.0.11...c58f49a3cc7b48916a98dcb81764ce77950d535a)

[Compare
Source](https://redirect.github.com/nestjs/nest/compare/v11.0.11...v11.0.12)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-fastify)</summary>

###
[`v11.0.12`](https://redirect.github.com/nestjs/nest/releases/tag/v11.0.12)

[Compare
Source](https://redirect.github.com/nestjs/nest/compare/v11.0.11...v11.0.12)

#### v11.0.12 (2025-03-19)

##### Bug fixes

-   `core`
- [#&#8203;14803](https://redirect.github.com/nestjs/nest/pull/14803)
fix(core): infinite loop on broken circular reference
([@&#8203;kamilmysliwiec](https://redirect.github.com/kamilmysliwiec))
-
[https://github.com/nestjs/nest/pull/14792](https://redirect.github.com/nestjs/nest/pull/14792)
dependencies not resolving for request-scoped lazy providers
([@&#8203;anizozina](https://redirect.github.com/anizozina))

##### Enhancements

-   `core`
- [#&#8203;14802](https://redirect.github.com/nestjs/nest/pull/14802)
feat(core): add options to the legacy route converter
([@&#8203;kamilmysliwiec](https://redirect.github.com/kamilmysliwiec))

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/testing)</summary>

###
[`v11.0.12`](https://redirect.github.com/nestjs/nest/compare/v11.0.11...c58f49a3cc7b48916a98dcb81764ce77950d535a)

[Compare
Source](https://redirect.github.com/nestjs/nest/compare/v11.0.11...v11.0.12)

</details>

<details>
<summary>nuxt/devtools (@&#8203;nuxt/devtools)</summary>

###
[`v2.3.1`](https://redirect.github.com/nuxt/devtools/blob/HEAD/CHANGELOG.md#231-2025-03-20)

[Compare
Source](https://redirect.github.com/nuxt/devtools/compare/v2.3.0...v2.3.1)

##### Bug Fixes

- downgrade `execa` to be compatible with Node v18, fix
[#&#8203;821](https://redirect.github.com/nuxt/devtools/issues/821)
([f15c7dc](f15c7dca3a))

</details>

<details>
<summary>rollup/rollup (@&#8203;rollup/rollup-linux-x64-gnu)</summary>

###
[`v4.37.0`](https://redirect.github.com/rollup/rollup/blob/HEAD/CHANGELOG.md#4370)

[Compare
Source](https://redirect.github.com/rollup/rollup/compare/v4.36.0...v4.37.0)

*2025-03-23*

##### Features

- Support Musl Linux on Riscv64 architectures
([#&#8203;5726](https://redirect.github.com/rollup/rollup/issues/5726))
- Handles class decorators placed before the `export` keyword
([#&#8203;5871](https://redirect.github.com/rollup/rollup/issues/5871))

##### Bug Fixes

- Log Rust panic messages to the console when using the WASM build
([#&#8203;5875](https://redirect.github.com/rollup/rollup/issues/5875))

##### Pull Requests

- [#&#8203;5726](https://redirect.github.com/rollup/rollup/pull/5726):
Add support for linux riscv64 musl
([@&#8203;fossdd](https://redirect.github.com/fossdd),
[@&#8203;leso-kn](https://redirect.github.com/leso-kn))
- [#&#8203;5871](https://redirect.github.com/rollup/rollup/pull/5871):
feat: support decorators before or after export
([@&#8203;TrickyPi](https://redirect.github.com/TrickyPi))
- [#&#8203;5875](https://redirect.github.com/rollup/rollup/pull/5875):
capture Rust panic messages and output them to the console.
([@&#8203;luyahan](https://redirect.github.com/luyahan),
[@&#8203;lukastaegert](https://redirect.github.com/lukastaegert))
- [#&#8203;5883](https://redirect.github.com/rollup/rollup/pull/5883):
Pin digest of 3rd party actions
([@&#8203;re-taro](https://redirect.github.com/re-taro))
- [#&#8203;5885](https://redirect.github.com/rollup/rollup/pull/5885):
fix(deps): lock file maintenance minor/patch updates
([@&#8203;renovate](https://redirect.github.com/renovate)\[bot])

</details>

<details>
<summary>storybookjs/storybook
(@&#8203;storybook/addon-essentials)</summary>

###
[`v8.6.9`](https://redirect.github.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#869)

[Compare
Source](https://redirect.github.com/storybookjs/storybook/compare/v8.6.8...v8.6.9)

- Next: Fix react aliases in next vite plugin -
[#&#8203;30914](https://redirect.github.com/storybookjs/storybook/pull/30914),
thanks [@&#8203;kasperpeulen](https://redirect.github.com/kasperpeulen)!

###
[`v8.6.8`](https://redirect.github.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#868)

[Compare
Source](https://redirect.github.com/storybookjs/storybook/compare/v8.6.7...v8.6.8)

- Angular: Export all files in Angular package.json -
[#&#8203;30849](https://redirect.github.com/storybookjs/storybook/pull/30849),
thanks [@&#8203;kasperpeulen](https://redirect.github.com/kasperpeulen)!
- CLI: Don't add packageManager entry to package.json automatically -
[#&#8203;30855](https://redirect.github.com/storybookjs/storybook/pull/30855),
thanks [@&#8203;kasperpeulen](https://redirect.github.com/kasperpeulen)!
- React: Allow portable stories to be used in SSR -
[#&#8203;30847](https://redirect.github.com/storybookjs/storybook/pull/30847),
thanks [@&#8203;kasperpeulen](https://redirect.github.com/kasperpeulen)!
- Svelte: Adjust Svelte typings to include Svelte 5 function components
-
[#&#8203;30852](https://redirect.github.com/storybookjs/storybook/pull/30852),
thanks [@&#8203;dummdidumm](https://redirect.github.com/dummdidumm)!
- Telemetry: Make sure that telemetry doesn't fail on init -
[#&#8203;30857](https://redirect.github.com/storybookjs/storybook/pull/30857),
thanks [@&#8203;kasperpeulen](https://redirect.github.com/kasperpeulen)!
- Vite: Update HMR filter to target specific story file types -
[#&#8203;30845](https://redirect.github.com/storybookjs/storybook/pull/30845),
thanks [@&#8203;kasperpeulen](https://redirect.github.com/kasperpeulen)!

</details>

<details>
<summary>storybookjs/storybook (@&#8203;storybook/addon-links)</summary>

###
[`v8.6.9`](https://redirect.github.com/storybookjs/storybook/compare/v8.6.8...207c2f46348303bf86950865cf7a193b5a60ab69)

[Compare
Source](https://redirect.github.com/storybookjs/storybook/compare/v8.6.8...v8.6.9)

###
[`v8.6.8`](https://redirect.github.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#868)

[Compare
Source](https://redirect.github.com/storybookjs/storybook/compare/v8.6.7...v8.6.8)

- Angular: Export all files in Angular package.json -
[#&#8203;30849](https://redirect.github.com/storybookjs/storybook/pull/30849),
thanks [@&#8203;kasperpeulen](https://redirect.github.com/kasperpeulen)!
- CLI: Don't add packageManager entry to package.json automatically -
[#&#8203;30855](https://redirect.github.com/storybookjs/storybook/pull/30855),
thanks [@&#8203;kasperpeulen](https://redirect.github.com/kasperpeulen)!
- React: Allow portable stories to be used in SSR -
[#&#8203;30847](https://redirect.github.com/storybookjs/storybook/pull/30847),
thanks [@&#8203;kasperpeulen](https://redirect.github.com/kasperpeulen)!
- Svelte: Adjust Svelte typings to include Svelte 5 function components
-
[#&#8203;30852](https://redirect.github.com/storybookjs/storybook/pull/30852),
thanks [@&#8203;dummdidumm](https://redirect.github.com/dummdidumm)!
- Telemetry: Make sure that telemetry doesn't fail on init -
[#&#8203;30857](https://redirect.github.com/storybookjs/storybook/pull/30857),
thanks [@&#8203;kasperpeulen](https://redirect.github.com/kasperpeulen)!
- Vite: Update HMR filter to target specific story file types -
[#&#8203;30845](https://redirect.github.com/storybookjs/storybook/pull/30845),
thanks [@&#8203;kasperpeulen](https://redirect.github.com/kasperpeulen)!

</details>

<details>
<summary>swc-project/swc (@&#8203;swc/core)</summary>

###
[`v1.11.13`](https://redirect.github.com/swc-project/swc/blob/HEAD/CHANGELOG.md#11113---2025-03-24)

[Compare
Source](https://redirect.github.com/swc-project/swc/compare/v1.11.12...v1.11.13)

##### Features

- **(es/minifier)** Merge alt's cons with cons
([#&#8203;10256](https://redirect.github.com/swc-project/swc/issues/10256))
([589bcd7](589bcd70c4))

- **(swc_core)** Expose features of `swc_parallel`
([#&#8203;10258](https://redirect.github.com/swc-project/swc/issues/10258))
([042f19f](042f19ff66))

##### Performance

- **(es/minifier)** Merge `expr_simplifier` into pure optimizer
([#&#8203;10202](https://redirect.github.com/swc-project/swc/issues/10202))
([9c9b0ba](9c9b0baaac))

###
[`v1.11.12`](https://redirect.github.com/swc-project/swc/blob/HEAD/CHANGELOG.md#11112---2025-03-23)

[Compare
Source](https://redirect.github.com/swc-project/swc/compare/v1.11.11...v1.11.12)

##### Bug Fixes

- **(es/minifier)** Make `inline_globals` noop by default
([#&#8203;10231](https://redirect.github.com/swc-project/swc/issues/10231))
([b192dc8](b192dc82e6))

- **(es/minifier)** Fix access to `GLOBALS` in char freq compute
([#&#8203;10239](https://redirect.github.com/swc-project/swc/issues/10239))
([6286663](6286663868))

- **(es/parser)** Fix span of wrong `await` tokens
([#&#8203;10252](https://redirect.github.com/swc-project/swc/issues/10252))
([5c28dc3](5c28dc3964))

- **(es/types)** Fix broken types
([#&#8203;10224](https://redirect.github.com/swc-project/swc/issues/10224))
([540bdf8](540bdf868d))

##### Documentation

- **(es)** Improve documentation
([#&#8203;10247](https://redirect.github.com/swc-project/swc/issues/10247))
([549e38d](549e38db9e))

##### Features

- **(es/fast-lexer)** Enhance identifier handling with Unicode support
([#&#8203;10226](https://redirect.github.com/swc-project/swc/issues/10226))
([482b63a](482b63a905))

- **(es/minifier)** Invoke IIFE into block
([#&#8203;10220](https://redirect.github.com/swc-project/swc/issues/10220))
([c9a6c23](c9a6c23787))

- **(es/minifier)** Remove needless blocks
([#&#8203;10234](https://redirect.github.com/swc-project/swc/issues/10234))
([0817970](08179702bf))

- **(swc_parallel)** Introduce `rayon` mode
([#&#8203;10237](https://redirect.github.com/swc-project/swc/issues/10237))
([3c2213c](3c2213c829))

- **(ts/fast-strip)** Add start/end span information
([#&#8203;10251](https://redirect.github.com/swc-project/swc/issues/10251))
([ab39a62](ab39a62528))

- **(ts/fast-strip)** Improve error message snippet
([#&#8203;10253](https://redirect.github.com/swc-project/swc/issues/10253))
([f4f426c](f4f426c9c9))

- **(ts/fast-strip)** Remove line numbers
([#&#8203;10254](https://redirect.github.com/swc-project/swc/issues/10254))
([40e216d](40e216db82))

##### Performance

- **(es/minifier)** Merge `dead_branch_remover` into pure optimizer
([#&#8203;10201](https://redirect.github.com/swc-project/swc/issues/10201))
([6841523](6841523977))

</details>

<details>
<summary>eslint/eslint (eslint)</summary>

###
[`v9.23.0`](https://redirect.github.com/eslint/eslint/compare/v9.22.0...2aaadceec13e6df89a0c56e2b6ce4a145c1ac3aa)

[Compare
Source](https://redirect.github.com/eslint/eslint/compare/v9.22.0...v9.23.0)

</details>

<details>
<summary>prettier/eslint-plugin-prettier
(eslint-plugin-prettier)</summary>

###
[`v5.2.5`](https://redirect.github.com/prettier/eslint-plugin-prettier/blob/HEAD/CHANGELOG.md#525)

[Compare
Source](https://redirect.github.com/prettier/eslint-plugin-prettier/compare/v5.2.4...v5.2.5)

##### Patch Changes

-
[#&#8203;721](https://redirect.github.com/prettier/eslint-plugin-prettier/pull/721)
[`4f5513d`](4f5513de4c)
Thanks [@&#8203;JounQin](https://redirect.github.com/JounQin)! - fix:
clarify correct `eslint-config-prettier` peer range

###
[`v5.2.4`](https://redirect.github.com/prettier/eslint-plugin-prettier/blob/HEAD/CHANGELOG.md#524)

[Compare
Source](https://redirect.github.com/prettier/eslint-plugin-prettier/compare/v5.2.3...v5.2.4)

##### Patch Changes

-
[#&#8203;715](https://redirect.github.com/prettier/eslint-plugin-prettier/pull/715)
[`b8cfe56`](b8cfe56e34)
Thanks [@&#8203;JounQin](https://redirect.github.com/JounQin)! - chore:
hourcekeeping, bump all (dev) deps

</details>

<details>
<summary>Urigo/graphql-scalars (graphql-scalars)</summary>

###
[`v1.24.2`](https://redirect.github.com/Urigo/graphql-scalars/blob/HEAD/CHANGELOG.md#1242)

[Compare
Source](https://redirect.github.com/Urigo/graphql-scalars/compare/v1.24.1...v1.24.2)

##### Patch Changes

-
[#&#8203;2791](https://redirect.github.com/graphql-hive/graphql-scalars/pull/2791)

[`3e1e924`](3e1e924b93)
Thanks [@&#8203;dotansimha](https://redirect.github.com/dotansimha)! -
Enable npm provenance

</details>

<details>
<summary>iamolegga/nestjs-pino (nestjs-pino)</summary>

###
[`v4.4.0`](https://redirect.github.com/iamolegga/nestjs-pino/releases/tag/4.4.0):
: allow publishing source map files

[Compare
Source](https://redirect.github.com/iamolegga/nestjs-pino/compare/4.3.1...4.4.0)

#### What's Changed

- build(deps-dev): bump prettier from 3.5.1 to 3.5.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2255](https://redirect.github.com/iamolegga/nestjs-pino/pull/2255)
- build(deps-dev): bump
[@&#8203;eslint/js](https://redirect.github.com/eslint/js) from 9.20.0
to 9.21.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2256](https://redirect.github.com/iamolegga/nestjs-pino/pull/2256)
- build(deps-dev): bump
[@&#8203;types/node](https://redirect.github.com/types/node) from
22.13.4 to 22.13.5 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2257](https://redirect.github.com/iamolegga/nestjs-pino/pull/2257)
- build(deps-dev): bump ts-jest from 29.2.5 to 29.2.6 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2258](https://redirect.github.com/iamolegga/nestjs-pino/pull/2258)
- build(deps-dev): bump
[@&#8203;eslint/eslintrc](https://redirect.github.com/eslint/eslintrc)
from 3.2.0 to 3.3.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2261](https://redirect.github.com/iamolegga/nestjs-pino/pull/2261)
- build(deps-dev): bump
[@&#8203;eslint/compat](https://redirect.github.com/eslint/compat) from
1.2.6 to 1.2.7 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2262](https://redirect.github.com/iamolegga/nestjs-pino/pull/2262)
- build(deps-dev): bump rxjs from 7.8.1 to 7.8.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2259](https://redirect.github.com/iamolegga/nestjs-pino/pull/2259)
- build(deps-dev): bump eslint from 9.20.1 to 9.21.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2260](https://redirect.github.com/iamolegga/nestjs-pino/pull/2260)
- build(deps-dev): bump
[@&#8203;typescript-eslint/eslint-plugin](https://redirect.github.com/typescript-eslint/eslint-plugin)
from 8.24.1 to 8.25.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2263](https://redirect.github.com/iamolegga/nestjs-pino/pull/2263)
- build(deps-dev): bump
[@&#8203;typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser)
from 8.24.1 to 8.25.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2264](https://redirect.github.com/iamolegga/nestjs-pino/pull/2264)
- build(deps-dev): bump eslint-config-prettier from 10.0.1 to 10.0.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2265](https://redirect.github.com/iamolegga/nestjs-pino/pull/2265)
- build(deps-dev): bump
[@&#8203;nestjs/testing](https://redirect.github.com/nestjs/testing)
from 11.0.10 to 11.0.11 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2267](https://redirect.github.com/iamolegga/nestjs-pino/pull/2267)
- build(deps-dev): bump
[@&#8203;types/node](https://redirect.github.com/types/node) from
22.13.5 to 22.13.8 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2268](https://redirect.github.com/iamolegga/nestjs-pino/pull/2268)
- build(deps-dev): bump
[@&#8203;nestjs/platform-express](https://redirect.github.com/nestjs/platform-express)
from 11.0.10 to 11.0.11 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2269](https://redirect.github.com/iamolegga/nestjs-pino/pull/2269)
- build(deps-dev): bump prettier from 3.5.2 to 3.5.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2271](https://redirect.github.com/iamolegga/nestjs-pino/pull/2271)
- build(deps-dev): bump
[@&#8203;nestjs/core](https://redirect.github.com/nestjs/core) from
11.0.10 to 11.0.11 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2272](https://redirect.github.com/iamolegga/nestjs-pino/pull/2272)
- build(deps-dev): bump
[@&#8203;nestjs/platform-fastify](https://redirect.github.com/nestjs/platform-fastify)
from 11.0.10 to 11.0.11 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2273](https://redirect.github.com/iamolegga/nestjs-pino/pull/2273)
- build(deps-dev): bump
[@&#8203;nestjs/common](https://redirect.github.com/nestjs/common) from
11.0.10 to 11.0.11 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2274](https://redirect.github.com/iamolegga/nestjs-pino/pull/2274)
- build(deps-dev): bump
[@&#8203;types/node](https://redirect.github.com/types/node) from
22.13.8 to 22.13.9 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2275](https://redirect.github.com/iamolegga/nestjs-pino/pull/2275)
- build(deps-dev): bump
[@&#8203;typescript-eslint/eslint-plugin](https://redirect.github.com/typescript-eslint/eslint-plugin)
from 8.25.0 to 8.26.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2276](https://redirect.github.com/iamolegga/nestjs-pino/pull/2276)
- build(deps-dev): bump
[@&#8203;typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser)
from 8.25.0 to 8.26.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2277](https://redirect.github.com/iamolegga/nestjs-pino/pull/2277)
- build(deps-dev): bump eslint from 9.21.0 to 9.22.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2278](https://redirect.github.com/iamolegga/nestjs-pino/pull/2278)
- build(deps-dev): bump
[@&#8203;types/node](https://redirect.github.com/types/node) from
22.13.9 to 22.13.10 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2280](https://redirect.github.com/iamolegga/nestjs-pino/pull/2280)
- build(deps-dev): bump eslint-config-prettier from 10.0.2 to 10.1.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2281](https://redirect.github.com/iamolegga/nestjs-pino/pull/2281)
- build(deps-dev): bump
[@&#8203;typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser)
from 8.26.0 to 8.26.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2284](https://redirect.github.com/iamolegga/nestjs-pino/pull/2284)
- build(deps-dev): bump
[@&#8203;typescript-eslint/eslint-plugin](https://redirect.github.com/typescript-eslint/eslint-plugin)
from 8.26.0 to 8.26.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2285](https://redirect.github.com/iamolegga/nestjs-pino/pull/2285)
- build(deps-dev): bump typescript from 5.7.3 to 5.8.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2270](https://redirect.github.com/iamolegga/nestjs-pino/pull/2270)
- chore(package): allow publishing source map files by
[@&#8203;H4ad](https://redirect.github.com/H4ad) in
[https://github.com/iamolegga/nestjs-pino/pull/2288](https://redirect.github.com/iamolegga/nestjs-pino/pull/2288)

#### New Contributors

- [@&#8203;H4ad](https://redirect.github.com/H4ad) made their first
contribution in
[https://github.com/iamolegga/nestjs-pino/pull/2288](https://redirect.github.com/iamolegga/nestjs-pino/pull/2288)

**Full Changelog**:
https://github.com/iamolegga/nestjs-pino/compare/4.3.1...4.4.0

</details>

<details>
<summary>nuxt/nuxt (nuxt)</summary>

###
[`v3.16.1`](https://redirect.github.com/nuxt/nuxt/releases/tag/v3.16.1)

[Compare
Source](https://redirect.github.com/nuxt/nuxt/compare/v3.16.0...v3.16.1)

[compare
changes](https://redirect.github.com/nuxt/nuxt/compare/v3.16.0...v3.16.1)

##### 🔥 Performance

- **nuxt:** Use browser cache for payloads
([#&#8203;31379](https://redirect.github.com/nuxt/nuxt/pull/31379))

##### 🩹 Fixes

- **nuxt:** Restore nuxt aliases to nitro compilerOptions.paths
([#&#8203;31278](https://redirect.github.com/nuxt/nuxt/pull/31278))
- **nuxt:** Use new `mocked-exports`
([#&#8203;31295](https://redirect.github.com/nuxt/nuxt/pull/31295))
- **nuxt:** Check resolved options for polyfills
([#&#8203;31307](https://redirect.github.com/nuxt/nuxt/pull/31307))
- **nuxt:** Render style component html
([#&#8203;31337](https://redirect.github.com/nuxt/nuxt/pull/31337))
- **nuxt:** Add missing lazy hydration prop in regex
([#&#8203;31359](https://redirect.github.com/nuxt/nuxt/pull/31359))
- **nuxt:** Fully resolve nuxt dependencies
([#&#8203;31436](https://redirect.github.com/nuxt/nuxt/pull/31436))
- **vite:** Don't show interim vite build output files
([#&#8203;31439](https://redirect.github.com/nuxt/nuxt/pull/31439))
- **nuxt:** Ignore prerendering unprefixed public assets
([151912ec3](https://redirect.github.com/nuxt/nuxt/commit/151912ec3))
- **nuxt:** Use more performant router catchall pattern
([#&#8203;31450](https://redirect.github.com/nuxt/nuxt/pull/31450))
- **nuxt:** Prevent param duplication in `typedPages` implementation
([#&#8203;31331](https://redirect.github.com/nuxt/nuxt/pull/31331))
- **nuxt:** Sort route paths before creating route tree
([#&#8203;31454](https://redirect.github.com/nuxt/nuxt/pull/31454))

##### 📖 Documentation

- Update link to vercel edge network
([ec20802a5](https://redirect.github.com/nuxt/nuxt/commit/ec20802a5))
- Improve HMR performance note for Windows users
([#&#8203;31301](https://redirect.github.com/nuxt/nuxt/pull/31301))
- Correct WSL note phrasing
([#&#8203;31322](https://redirect.github.com/nuxt/nuxt/pull/31322))
- Fix typo
([#&#8203;31341](https://redirect.github.com/nuxt/nuxt/pull/31341))
- Adjust `app.head` example
([#&#8203;31350](https://redirect.github.com/nuxt/nuxt/pull/31350))
- Include package manager options in update script
([#&#8203;31346](https://redirect.github.com/nuxt/nuxt/pull/31346))
- Add missing comma
([#&#8203;31362](https://redirect.github.com/nuxt/nuxt/pull/31362))
- Add mention of `addServerTemplate` to modules guide
([#&#8203;31369](https://redirect.github.com/nuxt/nuxt/pull/31369))
- Add `rspack` and remove `test-utils` for monorepo guide
([#&#8203;31371](https://redirect.github.com/nuxt/nuxt/pull/31371))
- Adjust example
([#&#8203;31372](https://redirect.github.com/nuxt/nuxt/pull/31372))
- Update experimental docs
([#&#8203;31388](https://redirect.github.com/nuxt/nuxt/pull/31388))
- Use `ini` syntax block highlighting for `.env` files
([f79fabe46](https://redirect.github.com/nuxt/nuxt/commit/f79fabe46))
- Improve `useHydration` docs
([#&#8203;31427](https://redirect.github.com/nuxt/nuxt/pull/31427))
- Update broken docs links
([#&#8203;31430](https://redirect.github.com/nuxt/nuxt/pull/31430))
- Mention possibility of prerendering api routes
([#&#8203;31234](https://redirect.github.com/nuxt/nuxt/pull/31234))

##### 🏡 Chore

- Fix gitignore
([6fe9dff7e](https://redirect.github.com/nuxt/nuxt/commit/6fe9dff7e))
- Bump axios dependency in lockfile
([c3352e80b](https://redirect.github.com/nuxt/nuxt/commit/c3352e80b))
- Lint repo
([2ab20bfdc](https://redirect.github.com/nuxt/nuxt/commit/2ab20bfdc))
- Add scorecard badge
([#&#8203;31302](https://redirect.github.com/nuxt/nuxt/pull/31302))
- Dedupe
([be5d85f2b](https://redirect.github.com/nuxt/nuxt/commit/be5d85f2b))

#####  Tests

- Migrate runtime compiler test to playwright (+ add test cases)
([#&#8203;31405](https://redirect.github.com/nuxt/nuxt/pull/31405))
- Migrate spa preloader tests to playwright
([#&#8203;31273](https://redirect.github.com/nuxt/nuxt/pull/31273))
- Use `srvx` and random port for remote provider
([#&#8203;31432](https://redirect.github.com/nuxt/nuxt/pull/31432))

##### 🤖 CI

- Automate release on merge of of v3/v4
([6ae5b5fdb](https://redirect.github.com/nuxt/nuxt/commit/6ae5b5fdb))
- Fix workflow quoting
([fef39cf3c](https://redirect.github.com/nuxt/nuxt/commit/fef39cf3c))

##### ❤️ Contributors

- Daniel Roe
([@&#8203;danielroe](https://redirect.github.com/danielroe))
- Anoesj Sadraee ([@&#8203;Anoesj](https://redirect.github.com/Anoesj))
- Peter Radko ([@&#8203;Gwynerva](https://redirect.github.com/Gwynerva))
- Adam DeHaven
([@&#8203;adamdehaven](https://redirect.github.com/adamdehaven))
- Alex Liu
([@&#8203;Mini-ghost](https://redirect.github.com/Mini-ghost))
- Julien Huang
([@&#8203;huang-julien](https://redirect.github.com/huang-julien))
- Francesco Agnoletto
([@&#8203;Kornil](https://redirect.github.com/Kornil))
- Guillaume Chau ([@&#8203;Akryum](https://redirect.github.com/Akryum))
- imreegall ([@&#8203;imreegall](https://redirect.github.com/imreegall))
-   xjccc ([@&#8203;xjccc](https://redirect.github.com/xjccc))
-   Sam Blowes ([@&#8203;blowsie](https://redirect.github.com/blowsie))
-   Nimit012 ([@&#8203;Nimit012](https://redirect.github.com/Nimit012))
- Camille Coutens ([@&#8203;Kamsou](https://redirect.github.com/Kamsou))

</details>

<details>
<summary>unovue/reka-ui (reka-ui)</summary>

###
[`v2.1.1`](https://redirect.github.com/unovue/reka-ui/releases/tag/v2.1.1)

[Compare
Source](https://redirect.github.com/unovue/reka-ui/compare/v2.1.0...v2.1.1)

#####    🐞 Bug Fixes

-   **Calendar**:
- Properly calculate focus for next month when pagedNavigation is false
 -  by [@&#8203;epr3](https://redirect.github.com/epr3) in
[https://github.com/unovue/reka-ui/issues/1742](https://redirect.github.com/unovue/reka-ui/issues/1742)
[<samp>(7b91b)</samp>](https://redirect.github.com/unovue/reka-ui/commit/7b91bc08)
- Handle number of months > 2  -  by
[@&#8203;epr3](https://redirect.github.com/epr3) in
[https://github.com/unovue/reka-ui/issues/1744](https://redirect.github.com/unovue/reka-ui/issues/1744)
[<samp>(71023)</samp>](https://redirect.github.com/unovue/reka-ui/commit/71023c87)
-   **Combobox**:
- InjectComboboxItemContext is incorrect  -  by
[@&#8203;g12i](https://redirect.github.com/g12i) in
[https://github.com/unovue/reka-ui/issues/1722](https://redirect.github.com/unovue/reka-ui/issues/1722)
[<samp>(1b68e)</samp>](https://redirect.github.com/unovue/reka-ui/commit/1b68e5b5)
-   **HoverCard**:
- Default open type  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia) in
[https://github.com/unovue/reka-ui/issues/1732](https://redirect.github.com/unovue/reka-ui/issues/1732)
[<samp>(16ffc)</samp>](https://redirect.github.com/unovue/reka-ui/commit/16ffcc27)
-   **NavigationMenu**:
- Wrong instance of activetrigger being reference  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia) in
[https://github.com/unovue/reka-ui/issues/1741](https://redirect.github.com/unovue/reka-ui/issues/1741)
[<samp>(b72a9)</samp>](https://redirect.github.com/unovue/reka-ui/commit/b72a90b2)
-   **RangeCalendar**:
- Programatically set value doesn't update the calendar  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia) in
[https://github.com/unovue/reka-ui/issues/1739](https://redirect.github.com/unovue/reka-ui/issues/1739)
[<samp>(80001)</samp>](https://redirect.github.com/unovue/reka-ui/commit/80001892)
-   **Select**:
- Position issue for value missing in content  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia) in
[https://github.com/unovue/reka-ui/issues/1745](https://redirect.github.com/unovue/reka-ui/issues/1745)
[<samp>(770c2)</samp>](https://redirect.github.com/unovue/reka-ui/commit/770c292a)
-   **Slider**:
- Thumb has incorrect tag by default  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia) in
[https://github.com/unovue/reka-ui/issues/1734](https://redirect.github.com/unovue/reka-ui/issues/1734)
[<samp>(f8ebc)</samp>](https://redirect.github.com/unovue/reka-ui/commit/f8ebc9ec)
-   **TagsInput**:
- Fix comparing model values  -  by
[@&#8203;g12i](https://redirect.github.com/g12i) in
[https://github.com/unovue/reka-ui/issues/1723](https://redirect.github.com/unovue/reka-ui/issues/1723)
[<samp>(5dfb7)</samp>](https://redirect.github.com/unovue/reka-ui/commit/5dfb70c3)
-   **Toast**:
- Add missing swipeMove, swipeCancel, and swipeEnd events  -  by
[@&#8203;hartbit](https://redirect.github.com/hartbit) in
[https://github.com/unovue/reka-ui/

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-25 09:29:31 -04:00
renovate[bot]
8f78b3f1ca fix(deps): update dependency marked to v15 (#1249)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [marked](https://marked.js.org)
([source](https://redirect.github.com/markedjs/marked)) | [`^12.0.2` ->
`^15.0.0`](https://renovatebot.com/diffs/npm/marked/12.0.2/15.0.7) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/marked/15.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/marked/15.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/marked/12.0.2/15.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/marked/12.0.2/15.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>markedjs/marked (marked)</summary>

###
[`v15.0.7`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.7)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.6...v15.0.7)

##### Bug Fixes

- fix table rendered as heading
([#&#8203;3612](https://redirect.github.com/markedjs/marked/issues/3612))
([9ae87de](9ae87de7cb))

###
[`v15.0.6`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.6)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.5...v15.0.6)

##### Bug Fixes

- fix strikethrough inside strong and em to follow gfm
([#&#8203;3577](https://redirect.github.com/markedjs/marked/issues/3577))
([7712a53](7712a5324f))

###
[`v15.0.5`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.5)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.4...v15.0.5)

##### Bug Fixes

- allow strikethrough inside strong and em to follow gfm
([#&#8203;3569](https://redirect.github.com/markedjs/marked/issues/3569))
([8a01658](8a01658cac))

###
[`v15.0.4`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.4)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.3...v15.0.4)

##### Bug Fixes

- fix list with no items looping forever
([#&#8203;3560](https://redirect.github.com/markedjs/marked/issues/3560))
([e4198ed](e4198ed70d))

###
[`v15.0.3`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.3)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.2...v15.0.3)

##### Bug Fixes

- update punctuation regex syntax to fix babel mistaken transpile
([#&#8203;3547](https://redirect.github.com/markedjs/marked/issues/3547))
([9b988c4](9b988c47bd))

###
[`v15.0.2`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.2)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.1...v15.0.2)

##### Bug Fixes

- update punctuation regex syntax for compatibility
([#&#8203;3540](https://redirect.github.com/markedjs/marked/issues/3540))
([fd015f1](fd015f147d))

###
[`v15.0.1`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.1)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v15.0.0...v15.0.1)

##### Bug Fixes

- Remove unused plus typescript tightening
([#&#8203;3527](https://redirect.github.com/markedjs/marked/issues/3527))
([1f579f7](1f579f7628))

###
[`v15.0.0`](https://redirect.github.com/markedjs/marked/releases/tag/v15.0.0)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v14.1.4...v15.0.0)

##### Bug Fixes

- escape html in renderer
([#&#8203;3495](https://redirect.github.com/markedjs/marked/issues/3495))
([58d66e5](58d66e59d1))
- Move all regexps to rules
([#&#8203;3519](https://redirect.github.com/markedjs/marked/issues/3519))
([1f88deb](1f88deb58a))

##### BREAKING CHANGES

-   escape html in renderers instead of tokenizers for all tokens.

###
[`v14.1.4`](https://redirect.github.com/markedjs/marked/releases/tag/v14.1.4)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v14.1.3...v14.1.4)

##### Bug Fixes

- fix del with escaped tilde
([#&#8203;3517](https://redirect.github.com/markedjs/marked/issues/3517))
([0afe87d](0afe87d7fb))
- fix html comment after list
([#&#8203;3518](https://redirect.github.com/markedjs/marked/issues/3518))
([a612576](a612576ff6))

###
[`v14.1.3`](https://redirect.github.com/markedjs/marked/releases/tag/v14.1.3)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v14.1.2...v14.1.3)

##### Bug Fixes

- include single nested parens in emStrong link mask
([#&#8203;3475](https://redirect.github.com/markedjs/marked/issues/3475))
([2b7efa8](2b7efa8dda))
- kill SIGINT signal at man for marked --help
([#&#8203;3483](https://redirect.github.com/markedjs/marked/issues/3483))
([b1fd3ea](b1fd3eafd8))

###
[`v14.1.2`](https://redirect.github.com/markedjs/marked/releases/tag/v14.1.2)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v14.1.1...v14.1.2)

##### Bug Fixes

- fix html following list
([#&#8203;3444](https://redirect.github.com/markedjs/marked/issues/3444))
([9d7b728](9d7b728749))

###
[`v14.1.1`](https://redirect.github.com/markedjs/marked/releases/tag/v14.1.1)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v14.1.0...v14.1.1)

##### Bug Fixes

- Don't replace tabs with spaces
([#&#8203;3438](https://redirect.github.com/markedjs/marked/issues/3438))
([9ed6456](9ed6456a37))

###
[`v14.1.0`](https://redirect.github.com/markedjs/marked/releases/tag/v14.1.0)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v14.0.0...v14.1.0)

##### Bug Fixes

- don't export block or inline
([#&#8203;3427](https://redirect.github.com/markedjs/marked/issues/3427))
([3f0430a](3f0430a45e))

##### Features

- add provideLexer and provideParser hooks
([#&#8203;3424](https://redirect.github.com/markedjs/marked/issues/3424))
([447f5af](447f5af7e4))

###
[`v14.0.0`](https://redirect.github.com/markedjs/marked/releases/tag/v14.0.0)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v13.0.3...v14.0.0)

##### Bug Fixes

- allow async option to dictate type returned
([#&#8203;3341](https://redirect.github.com/markedjs/marked/issues/3341))
([b5a5004](b5a50041ae))
- Remove useNewRenderer
([#&#8203;3342](https://redirect.github.com/markedjs/marked/issues/3342))
([e64f226](e64f226539))

##### BREAKING CHANGES

-   Remove old renderer
- throw an error if `async: false` is set when an extension sets `async:
true`

###
[`v13.0.3`](https://redirect.github.com/markedjs/marked/releases/tag/v13.0.3)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v13.0.2...v13.0.3)

##### Bug Fixes

- fix recursion-like stack overflow error caused by the old render…
([#&#8203;3380](https://redirect.github.com/markedjs/marked/issues/3380))
([89af0b8](89af0b85b1))

###
[`v13.0.2`](https://redirect.github.com/markedjs/marked/releases/tag/v13.0.2)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v13.0.1...v13.0.2)

##### Bug Fixes

- fix list item with blank first line
([#&#8203;3351](https://redirect.github.com/markedjs/marked/issues/3351))
([d28e4c6](d28e4c65ea))

###
[`v13.0.1`](https://redirect.github.com/markedjs/marked/releases/tag/v13.0.1)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v13.0.0...v13.0.1)

##### Bug Fixes

- fix this type in extension methods
([#&#8203;3339](https://redirect.github.com/markedjs/marked/issues/3339))
([520b9ad](520b9ad355))

###
[`v13.0.0`](https://redirect.github.com/markedjs/marked/releases/tag/v13.0.0)

[Compare
Source](https://redirect.github.com/markedjs/marked/compare/v12.0.2...v13.0.0)

##### Bug Fixes

- Fix blockquote code continuation
([#&#8203;3264](https://redirect.github.com/markedjs/marked/issues/3264))
([7ab8185](7ab818502e))
- Add parser as a property on the Renderer object
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))
- Send block text tokens to the text renderer
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))

##### Features

- Send token objects to renderers
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))
([1ce59ea](1ce59ea827))
- Add space renderer that returns empty string by default
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))
- Add header and align properties to TableCell token
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))
- Add TableRow token
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))
- Add Checkbox token
([#&#8203;3291](https://redirect.github.com/markedjs/marked/issues/3291))

##### BREAKING CHANGES

- Add space token after blockquote and hr if there are multiple newlines
- Send token objects to renderers and move logic to parse tokens from
the parser to the renderers.
- Most extensions that update marked renderers should still work with
this version but will break in a future major version.
- Extensions that change marked renderers will need to be updated and
use new option `useNewRenderer` and accept a token object instead of
multiple parameters. See updated [Renderer
docs](https://marked.js.org/using_pro#renderer)

        ```js
        // v12 renderer extension

        const extension = {
          renderer: {
            heading(text, level) {
              // increase level by 1
              return `<h${level + 1}>${text}</h${level + 1}>`;
            }
          }
        };

        marked.use(extension);
        ```

        ```js
        // v13 renderer extension

        const extension = {
          useNewRenderer: true,
          renderer: {
            heading(token) {
              // increase depth by 1
              const text = this.parser.parseInline(token.tokens);
              const level = token.depth;
              return `<h${level + 1}>${text}</h${level + 1}>`;
            }
          }
        };

        marked.use(extension);
        ```

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Eli Bosley <ekbosley@gmail.com>
2025-03-25 09:29:09 -04:00
Michael Datelle
a1d02b486a refactor: swap out dropdown with reka components (#1245)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced a new `DropdownMenu` component in user profiles with
dynamic content rendering.
- Added a new `Popover` component with interactive Storybook demos,
improving component discoverability.
- Added a new `DropdownMenuArrow` component to enhance dropdown visuals.
- Implemented new CSS custom properties for charts, enhancing styling
capabilities in light and dark themes.
- Enhanced dropdown functionality by encapsulating dropdown logic in a
new `UpcDropdownMenu` component.
- Added a new `Select` component for improved user interaction within
the `Sheet` component.
- Introduced a new `SheetWithSelect` story to showcase selection
functionality within the `Sheet` component.
- Updated the `Sidebar` component to improve modal behavior and content
positioning.
- Enhanced `UserProfile` components with a new feedback function for
better status indication.

- **Style**
- Refined layouts by replacing fixed widths with flexible, responsive
designs.
- Updated global styling with a refreshed chart color palette and
expanded dark mode support.

- **Refactor**
- Migrated components to use a unified UI library, streamlining
interactions and boosting consistency.
- Improved type safety in `BrandLoading` component by utilizing a new
type for variants and sizes.
- Updated component imports and organization to enhance maintainability.

- **Bug Fixes**
- Removed unused promotional code and components, simplifying the
codebase and improving performance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: mdatelle <mike@datelle.net>
Co-authored-by: Zack Spear <hi@zackspear.com>
Co-authored-by: Eli Bosley <ekbosley@gmail.com>
2025-03-24 17:24:52 -04:00
Eli Bosley
cc85fba207 fix: update configValid state to ineligible in var.ini and adjust rel… (#1268)
…ated tests

- Changed `configValid` value from "yes" to "ineligible" in `var.ini`.
- Updated tests in `emhttp.test.ts` and `var.test.ts` to reflect the new
state.
- Refactored `var.ts` to handle the new `configErrorState` logic based
on `configValid`.
- Adjusted `config.resolver.ts` to return the correct error state.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Enhanced configuration status reporting to indicate when settings are
ineligible, improving clarity on configuration validity.

- **Chores**
  - Updated recorded download times to maintain accurate logging.
- Refined the installation process with streamlined dependency linkage
and improved script readability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Zack Spear <hi@zackspear.com>
2025-03-24 14:19:30 -04:00
Eli Bosley
5958d33fce chore: cleanup the cleanup scripts (#1266)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Updated the plugin installation endpoint to use a new port for
improved connectivity.
- Streamlined installation and removal processes for a more reliable
setup and clearer cleanup feedback.
- Introduced a new script to manage cleanup operations, enhancing system
maintenance during removals.
- **Chores**
- Expanded file monitoring to support additional file types, ensuring
timely updates.
- Optimized background operations that configure essential components
for enhanced overall performance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-03-24 12:35:25 -04:00
Zack Spear
3a20930ead feat: UnraidCheckExec for Check OS Updates via UPC dropdown (#1265)
- Added `UnraidCheckExec.php` to separate concerns between UnraidCheck
and ReplaceKey, allowing for JSON responses.
- Updated `unraidcheck` script to parse query strings for compatibility
with the new class.
- Modified `webgui.ts` to call `UnraidCheckExec.php` instead of
`UnraidCheck.php` for update checks.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Updated the plugin installation process to ensure critical files
remain protected during updates.
- Introduced a dedicated update check component that now returns results
in a JSON format.
- Enhanced the web interface’s update check functionality with
streamlined request parameters.

- **Refactor**
- Separated update checking responsibilities for improved logic clarity
and overall reliability.
- Updated the interface for the update check payload to enhance
parameter handling.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-21 14:05:17 -07:00
Eli Bosley
bf81a63f8e chore: ensure files are uploaded with proper content encoding (#1254) 2025-03-21 10:28:33 -04:00
Zack Spear
7e6be67f61 feat: add ReplaceKey functionality to plugin (#1264)
This change enhances the plugin's capability to manage license keys
effectively.

- Introduced `ReplaceKey.php` from the webgui repo for handling
auto-extended key check & installation
- Updated dynamix.unraid.net.plg to include the new ReplaceKey.php in
restore and preserve files.
- Changed the `check()` method call in `Registration.page` to use the
`force` parameter per
https://app.asana.com/0/1204220153625175/1209573221367693/f
- Moved the `require_once` for `reboot-details.php` in Downgrade.page
and Update.page to ensure it's included after the `ReplaceKey` check.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced license key management now validates and updates credentials
more reliably.
- Essential configuration files are preserved throughout updates and
uninstalls to maintain system integrity.

- **Chores**
- Optimized the update and registration workflows for a smoother, more
stable user experience.
- Adjusted internal processing steps to prepare for upcoming
improvements in update checks.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-20 14:29:55 -07:00
Zack Spear
6a92f61f1a feat: downgrade page replace key check (#1263)
Joins Update.page and Registration.page in having Replace Key check due
to relation between OS Version & License OS Eligibility

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Introduced an enhanced system validation step during initialization
that verifies key functionality before processing reboot details,
improving system reliability.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-20 14:08:49 -07:00
renovate[bot]
9cad1a9454 fix(deps): update dependency graphql-ws to v6 (#1210)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [graphql-ws](https://the-guild.dev/graphql/ws)
([source](https://redirect.github.com/enisdenjo/graphql-ws)) |
[`^5.16.0` ->
`^6.0.0`](https://renovatebot.com/diffs/npm/graphql-ws/5.16.2/6.0.4) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/graphql-ws/6.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/graphql-ws/6.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/graphql-ws/5.16.2/6.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/graphql-ws/5.16.2/6.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>enisdenjo/graphql-ws (graphql-ws)</summary>

###
[`v6.0.4`](https://redirect.github.com/enisdenjo/graphql-ws/blob/HEAD/CHANGELOG.md#604)

[Compare
Source](https://redirect.github.com/enisdenjo/graphql-ws/compare/v6.0.3...v6.0.4)

##### Patch Changes

-
[#&#8203;625](https://redirect.github.com/enisdenjo/graphql-ws/pull/625)
[`b4a656d`](b4a656d585)
Thanks [@&#8203;HermanBilous](https://redirect.github.com/HermanBilous)!
- Use Math.pow for retry delay calculation

###
[`v6.0.3`](https://redirect.github.com/enisdenjo/graphql-ws/blob/HEAD/CHANGELOG.md#603)

[Compare
Source](https://redirect.github.com/enisdenjo/graphql-ws/compare/v6.0.2...v6.0.3)

##### Patch Changes

-
[`747c01c`](747c01c73e)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
Drop `ExecutionPatchResult` and `FormattedExecutionPatchResult` types

Neither of the types are officially supported (yet) and the future
versions of graphql-js adding support for stream/defer will a different
signature for the incremental execution result.

###
[`v6.0.2`](https://redirect.github.com/enisdenjo/graphql-ws/blob/HEAD/CHANGELOG.md#602)

[Compare
Source](https://redirect.github.com/enisdenjo/graphql-ws/compare/v6.0.1...v6.0.2)

##### Patch Changes

-
[#&#8203;621](https://redirect.github.com/enisdenjo/graphql-ws/pull/621)
[`6b180e8`](6b180e8fc2)
Thanks [@&#8203;pleunv](https://redirect.github.com/pleunv)! -
FormattedExecutionResult errors field returns GraphQLFormattedError

###
[`v6.0.1`](https://redirect.github.com/enisdenjo/graphql-ws/blob/HEAD/CHANGELOG.md#601)

[Compare
Source](https://redirect.github.com/enisdenjo/graphql-ws/compare/v6.0.0...v6.0.1)

##### Patch Changes

-
[#&#8203;618](https://redirect.github.com/enisdenjo/graphql-ws/pull/618)
[`6be34c7`](6be34c7969)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
Remove exports for CommonJS for Deno exports in package.json

[Deno supports ECMAScript modules
exclusively.](https://docs.deno.com/runtime/fundamentals/modules/)

-
[#&#8203;618](https://redirect.github.com/enisdenjo/graphql-ws/pull/618)
[`6be34c7`](6be34c7969)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
Define exports for CommonJS TypeScript definitions in package.json

###
[`v6.0.0`](https://redirect.github.com/enisdenjo/graphql-ws/blob/HEAD/CHANGELOG.md#600)

[Compare
Source](https://redirect.github.com/enisdenjo/graphql-ws/compare/v5.16.2...v6.0.0)

##### Major Changes

-
[`b668b30`](b668b304a8)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
[@&#8203;fastify/websocket](https://redirect.github.com/fastify/websocket)
WebSocket in the context extra has been renamed from `connection` to
`socket`

##### Migrating from v5 to v6

```diff
import { makeHandler } from 'graphql-ws/use/@&#8203;fastify/websocket';

makeHandler({
  schema(ctx) {
-   const websocket = ctx.connection;
+   const websocket = ctx.socket;
  },
  context(ctx) {
-   const websocket = ctx.connection;
+   const websocket = ctx.socket;
  },
  onConnect(ctx) {
-   const websocket = ctx.connection;
+   const websocket = ctx.socket;
  },
  onDisconnect(ctx) {
-   const websocket = ctx.connection;
+   const websocket = ctx.socket;
  },
  onClose(ctx) {
-   const websocket = ctx.connection;
+   const websocket = ctx.socket;
  },
  onSubscribe(ctx) {
-   const websocket = ctx.connection;
+   const websocket = ctx.socket;
  },
  onOperation(ctx) {
-   const websocket = ctx.connection;
+   const websocket = ctx.socket;
  },
  onError(ctx) {
-   const websocket = ctx.connection;
+   const websocket = ctx.socket;
  },
  onNext(ctx) {
-   const websocket = ctx.connection;
+   const websocket = ctx.socket;
  },
  onComplete(ctx) {
-   const websocket = ctx.connection;
+   const websocket = ctx.socket;
  },
});
```

-
[#&#8203;613](https://redirect.github.com/enisdenjo/graphql-ws/pull/613)
[`3f11aba`](3f11aba495)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
Drop support for `ws` v7

    `ws` v7 has been deprecated. Please upgrade and use v8.

-
[#&#8203;613](https://redirect.github.com/enisdenjo/graphql-ws/pull/613)
[`3f11aba`](3f11aba495)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
Drop support for deprecated `fastify-websocket`

[`fastify-websocket` has been deprecated since
v4.3.0.](https://www.npmjs.com/package/fastify-websocket). Please
upgrade and use
[`@fastify/websocket`](https://redirect.github.com/fastify/fastify-websocket).

-
[#&#8203;613](https://redirect.github.com/enisdenjo/graphql-ws/pull/613)
[`3f11aba`](3f11aba495)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! - The
`/lib/` part from imports has been removed, for example
`graphql-ws/lib/use/ws` becomes `graphql-ws/use/ws`

##### Migrating from v5 to v6

Simply remove the `/lib/` part from your graphql-ws imports that use a
handler.

##### ws

```diff
- import { useServer } from 'graphql-ws/lib/use/ws';
+ import { useServer } from 'graphql-ws/use/ws';
```

##### uWebSockets.js

```diff
- import { makeBehavior } from 'graphql-ws/lib/use/uWebSockets';
+ import { makeBehavior } from 'graphql-ws/use/uWebSockets';
```

#####
[@&#8203;fastify/websocket](https://redirect.github.com/fastify/websocket)

```diff
- import { makeHandler } from 'graphql-ws/lib/use/@&#8203;fastify/websocket';
+ import { makeHandler } from 'graphql-ws/use/@&#8203;fastify/websocket';
```

##### Bun

```diff
- import { handleProtocols, makeHandler } from 'graphql-ws/lib/use/bun';
+ import { handleProtocols, makeHandler } from 'graphql-ws/use/bun';
```

##### Deno

```diff
- import { makeHandler } from 'https://esm.sh/graphql-ws/lib/use/deno';
+ import { makeHandler } from 'https://esm.sh/graphql-ws/use/deno';
```

-
[#&#8203;613](https://redirect.github.com/enisdenjo/graphql-ws/pull/613)
[`3f11aba`](3f11aba495)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
`ErrorMessage` uses and `onError` returns `GraphQLFormattedError`
(instead of `GraphQLError`)

Thanks [@&#8203;benjie](https://redirect.github.com/benjie) for working
on this in
[#&#8203;599](https://redirect.github.com/enisdenjo/graphql-ws/issues/599)

-
[#&#8203;613](https://redirect.github.com/enisdenjo/graphql-ws/pull/613)
[`3f11aba`](3f11aba495)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
Least supported Node version is v20

Node v10 has been deprecated for years now. There is no reason to
support it. Bumping the engine to the current LTS (v20) also allows the
code to be leaner and use less polyfills.

-
[#&#8203;613](https://redirect.github.com/enisdenjo/graphql-ws/pull/613)
[`3f11aba`](3f11aba495)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
Least supported `graphql` peer dependency is ^15.10.1 and ^16

Users are advised to use the latest of `graphql` because of various
improvements in performance and security.

-
[#&#8203;613](https://redirect.github.com/enisdenjo/graphql-ws/pull/613)
[`3f11aba`](3f11aba495)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
`NextMessage` uses and `onNext` returns `FormattedExecutionResult`
(instead of `ExecutionResult`)

-
[#&#8203;613](https://redirect.github.com/enisdenjo/graphql-ws/pull/613)
[`3f11aba`](3f11aba495)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
`schema`, `context`, `onSubscribe`, `onOperation`, `onError`, `onNext`
and `onComplete` hooks don't have the full accompanying message anymore,
only the ID and the relevant part from the message

There is really no need to pass the full `SubscribeMessage` to the
`onSubscribe` hook. The only relevant parts from the message are the
`id` and the `payload`, the `type` is useless since the hook inherently
has it (`onNext` is `next` type, `onError` is `error` type, etc).

The actual techincal reason for not having the full message is to avoid
serialising results and errors twice. Both `onNext` and `onError` allow
the user to augment the result and return it to be used instead.
`onNext` originally had the `NextMessage` argument which already has the
`FormattedExecutionResult`, and `onError` originally had the
`ErrorMessage` argument which already has the `GraphQLFormattedError`,
and they both also returned `FormattedExecutionResult` and
`GraphQLFormattedError` respectivelly - meaning, if the user serialised
the results - the serialisation would happen **twice**.

Additionally, the `onOperation`, `onError`, `onNext` and `onComplete`
now have the `payload` which is the `SubscribeMessage.payload`
(`SubscribePayload`) for easier access to the original query as well as
execution params extensions.

##### Migrating from v5 to v6

##### `schema`

```diff
import { ExecutionArgs } from 'graphql';
import { ServerOptions, SubscribePayload } from 'graphql-ws';

const opts: ServerOptions = {
- schema(ctx, message, argsWithoutSchema: Omit<ExecutionArgs, 'schema'>) {
-   const messageId = message.id;
-   const messagePayload: SubscribePayload = message.payload;
- },
+ schema(ctx, id, payload) {
+   const messageId = id;
+   const messagePayload: SubscribePayload = payload;
+ },
};
```

##### `context`

```diff
import { ExecutionArgs } from 'graphql';
import { ServerOptions, SubscribePayload } from 'graphql-ws';

const opts: ServerOptions = {
- context(ctx, message, args: ExecutionArgs) {
-   const messageId = message.id;
-   const messagePayload: SubscribePayload = message.payload;
- },
+ context(ctx, id, payload, args: ExecutionArgs) {
+   const messageId = id;
+   const messagePayload: SubscribePayload = payload;
+ },
};
```

##### `onSubscribe`

```diff
import { ServerOptions, SubscribePayload } from 'graphql-ws';

const opts: ServerOptions = {
- onSubscribe(ctx, message) {
-   const messageId = message.id;
-   const messagePayload: SubscribePayload = message.payload;
- },
+ onSubscribe(ctx, id, payload) {
+   const messageId = id;
+   const messagePayload: SubscribePayload = payload;
+ },
};
```

##### `onOperation`

The `SubscribeMessage.payload` is not useful here at all, the `payload`
has been parsed to ready-to-use graphql execution args and should be
used instead.

```diff
import { ExecutionArgs } from 'graphql';
import { ServerOptions, SubscribePayload, OperationResult } from 'graphql-ws';

const opts: ServerOptions = {
- onOperation(ctx, message, args: ExecutionArgs, result: OperationResult) {
-   const messageId = message.id;
-   const messagePayload: SubscribePayload = message.payload;
- },
+ onOperation(ctx, id, payload, args: ExecutionArgs, result: OperationResult) {
+   const messageId = id;
+   const messagePayload: SubscribePayload = payload;
+ },
};
```

##### `onError`

The `ErrorMessage.payload` (`GraphQLFormattedError[]`) is not useful
here at all, the user has access to `GraphQLError[]` that are true
instances of the error containing object references to `originalError`s
and other properties. The user can always convert and return
`GraphQLFormattedError[]` by using the `.toJSON()` method.

```diff
import { GraphQLError, GraphQLFormattedError } from 'graphql';
import { ServerOptions, SubscribePayload } from 'graphql-ws';

const opts: ServerOptions = {
- onError(ctx, message, errors) {
-   const messageId = message.id;
-   const graphqlErrors: readonly GraphQLError[] = errors;
-   const errorMessagePayload: readonly GraphQLFormattedError[] = message.payload;
- },
+ onError(ctx, id, payload, errors) {
+   const messageId = id;
+   const graphqlErrors: readonly GraphQLError[] = errors;
+   const subscribeMessagePayload: SubscribePayload = payload;
+   const errorMessagePayload: readonly GraphQLFormattedError[] = errors.map((e) => e.toJSON());
+ },
};
```

##### `onNext`

The `NextMessage.payload` (`FormattedExecutionResult`) is not useful
here at all, the user has access to `ExecutionResult` that contains
actual object references to error instances. The user can always convert
and return `FormattedExecutionResult` by serialising the errors with
`GraphQLError.toJSON()` method.

```diff
import { ExecutionArgs, ExecutionResult, FormattedExecutionResult } from 'graphql';
import { ServerOptions, SubscribePayload } from 'graphql-ws';

const opts: ServerOptions = {
- onNext(ctx, message, args: ExecutionArgs, result: ExecutionResult) {
-   const messageId = message.id;
-   const nextMessagePayload: FormattedExecutionResult = message.payload;
- },
+ onNext(ctx, id, payload, args: ExecutionArgs, result: ExecutionResult) {
+   const messageId = id;
+   const subscribeMessagePayload: SubscribePayload = payload;
+   const nextMessagePayload: FormattedExecutionResult = { ...result, errors: result.errors?.map((e) => e.toJSON()) };
+ },
};
```

##### `onComplete`

```diff
import { ServerOptions, SubscribePayload } from 'graphql-ws';

const opts: ServerOptions = {
- onComplete(ctx, message) {
-   const messageId = message.id;
- },
+ onComplete(ctx, id, payload) {
+   const messageId = id;
+   const subscribeMessagePayload: SubscribePayload = payload;
+ },
};
```

-
[#&#8203;613](https://redirect.github.com/enisdenjo/graphql-ws/pull/613)
[`3f11aba`](3f11aba495)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
Errors thrown from subscription iterables will be caught and reported
through the `ErrorMessage`

Compared to the behaviour before, which terminated the whole WebSocket
connection - those errors are now gracefully reported and terminate only
the specific subscription that threw the error.

There's been [an editorial change in the GraphQL Spec suggesting this
being the correct
approach](https://redirect.github.com/graphql/graphql-spec/pull/1099).

Also, if you'd like to get involved and ideally drop your opinion about
whether iterable errors should be reported as errors or
`ExecutionResult`s with `errors` field set, [please read more
here](https://redirect.github.com/graphql/graphql-spec/pull/1127).

##### Migrating from v5 to v6

If you had used the suggested "ws server usage with custom subscribe
method that gracefully handles thrown errors" recipe, you can simply
remove it since this behaviour is now baked in.

```diff
import { subscribe } from 'graphql';
import { useServer } from 'graphql-ws/use/ws';
import { WebSocketServer } from 'ws'; // yarn add ws

const wsServer = new WebSocketServer({
  port: 4000,
  path: '/graphql',
});

useServer(
  {
    schema,
-   async subscribe(...args) {
-     const result = await subscribe(...args);
-     if ('next' in result) {
-       // is an async iterable, augment the next method to handle thrown errors
-       const originalNext = result.next;
-       result.next = async () => {
-         try {
-           return await originalNext();
-         } catch (err) {
-           // gracefully handle the error thrown from the next method
-           return { value: { errors: [err] } };
-         }
-       };
-     }
-     return result;
-   },
  },
  wsServer,
);
```

-
[#&#8203;613](https://redirect.github.com/enisdenjo/graphql-ws/pull/613)
[`3f11aba`](3f11aba495)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
Remove deprecated `isMessage`, use `validateMessage` instead

##### Migrating from v5 to v6

Replace all ocurrances of `isMessage` with `validateMessage`. Note that
`validateMessage` throws if the message is not valid, compared with
`isMessage` that simply returned true/false.

```diff
- import { isMessage } from 'graphql-ws';
+ import { validateMessage } from 'graphql-ws';

function isGraphQLWSMessage(val) {
- return isMessage(val);
+ try {
+   validateMessage(val);
+   return true;
+ } catch {
+   return false;
+ }
}
```

-
[#&#8203;613](https://redirect.github.com/enisdenjo/graphql-ws/pull/613)
[`3f11aba`](3f11aba495)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
Removed deprecated `isFatalConnectionProblem`, use `shouldRetry` instead

##### Migrating from v5 to v6

Replace all ocurrances of `isFatalConnectionProblem` with `shouldRetry`.
Note that the result is inverted, where you returned `false` in
`isFatalConnectionProblem` you should return `true` in `shouldRetry`.

```diff
import { createClient } from 'graphql-ws';

const client = createClient({
  url: 'ws://localhost:4000/graphql',
- isFatalConnectionProblem: () => false,
+ shouldRetry: () => true,
});
```

##### Minor Changes

-
[#&#8203;613](https://redirect.github.com/enisdenjo/graphql-ws/pull/613)
[`3f11aba`](3f11aba495)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
Client is truly zero-dependency, not even a peer dependency on `graphql`

In non-browser environments, you can use only the client and not even
depend on `graphql` by importing from `graphql-ws/client`.

    ```ts
    import { createClient } from 'graphql-ws/client';

    const client = createClient({
      url: 'ws://localhost:4000/graphql',
    });
    ```

Note that, in browser envirments (and of course having your bundler use
the [`browser` package.json
field](https://docs.npmjs.com/cli/v11/configuring-npm/package-json#browser)),
you don't have to import from `graphql-ws/client` - simply importing
from `graphql-ws` will only have the `createClient` available.

-
[#&#8203;615](https://redirect.github.com/enisdenjo/graphql-ws/pull/615)
[`29dd26a`](29dd26a509)
Thanks [@&#8203;enisdenjo](https://redirect.github.com/enisdenjo)! -
Define optional peer dependencies and least supported versions

Using the
[`peerDependencies`](https://docs.npmjs.com/cli/v11/configuring-npm/package-json#peerdependencies)
in combination with
[`peerDependenciesMeta`](https://docs.npmjs.com/cli/v11/configuring-npm/package-json#peerdependenciesmeta)
configuration in `package.json`.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-20 15:57:04 -04:00
renovate[bot]
2c01ba9610 fix(deps): update dependency vue-i18n to v11 (#1261)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[vue-i18n](https://redirect.github.com/intlify/vue-i18n/tree/master/packages/vue-i18n#readme)
([source](https://redirect.github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n))
| [`^10.0.5` ->
`^11.0.0`](https://renovatebot.com/diffs/npm/vue-i18n/10.0.6/11.1.2) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vue-i18n/11.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue-i18n/11.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue-i18n/10.0.6/11.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue-i18n/10.0.6/11.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>intlify/vue-i18n (vue-i18n)</summary>

###
[`v11.1.2`](https://redirect.github.com/intlify/vue-i18n/releases/tag/v11.1.2)

[Compare
Source](https://redirect.github.com/intlify/vue-i18n/compare/v11.1.1...v11.1.2)

<!-- Release notes generated using configuration in .github/release.yml
at v11.1.2 -->

#### What's Changed

##### 🔒 Security Fixes

- fix: prototype pollution in `handleFlatJson`, about details see
https://github.com/intlify/vue-i18n/security/advisories/GHSA-p2ph-7g93-hw3m

**Full Changelog**:
https://github.com/intlify/vue-i18n/compare/v11.1.1...v11.1.2

###
[`v11.1.1`](https://redirect.github.com/intlify/vue-i18n/releases/tag/v11.1.1)

[Compare
Source](https://redirect.github.com/intlify/vue-i18n/compare/v11.1.0...v11.1.1)

<!-- Release notes generated using configuration in .github/release.yml
at v11.1.1 -->

**Full Changelog**:
https://github.com/intlify/vue-i18n/compare/v11.1.0...v11.1.1

###
[`v11.1.0`](https://redirect.github.com/intlify/vue-i18n/releases/tag/v11.1.0)

[Compare
Source](https://redirect.github.com/intlify/vue-i18n/compare/v11.0.1...v11.1.0)

<!-- Release notes generated using configuration in .github/release.yml
at v11.1.0 -->

#### What's Changed

##### 🌟 Features

- feat: configurable `ComponentCustomProperties['$i18n']` type by
[@&#8203;BobbieGoede](https://redirect.github.com/BobbieGoede) in
[https://github.com/intlify/vue-i18n/pull/2094](https://redirect.github.com/intlify/vue-i18n/pull/2094)

##### 📝️ Documentations

- fix: vue-i18n v8 EOL by
[@&#8203;kazupon](https://redirect.github.com/kazupon) in
[https://github.com/intlify/vue-i18n/pull/2060](https://redirect.github.com/intlify/vue-i18n/pull/2060)

**Full Changelog**:
https://github.com/intlify/vue-i18n/compare/v11.0.1...v11.1.0

###
[`v11.0.1`](https://redirect.github.com/intlify/vue-i18n/blob/HEAD/CHANGELOG.md#v1101-2024-12-26T074058Z)

[Compare
Source](https://redirect.github.com/intlify/vue-i18n/compare/v11.0.0...v11.0.1)

This changelog is generated by [GitHub
Releases](https://redirect.github.com/intlify/vue-i18n/releases/tag/v11.0.1)

<!-- Release notes generated using configuration in .github/release.yml
at v11.0.1 -->

#### What's Changed

#####  Improvement Features

- fix: v-t custom directive warning when it will run by
[@&#8203;kazupon](https://redirect.github.com/kazupon) in
[https://github.com/intlify/vue-i18n/pull/2057](https://redirect.github.com/intlify/vue-i18n/pull/2057)

**Full Changelog**:
https://github.com/intlify/vue-i18n/compare/v11.0.0...v11.0.1

###
[`v11.0.0`](https://redirect.github.com/intlify/vue-i18n/blob/HEAD/CHANGELOG.md#v1100-2024-12-24T150100Z)

[Compare
Source](https://redirect.github.com/intlify/vue-i18n/compare/v10.0.6...v11.0.0)

This changelog is generated by [GitHub
Releases](https://redirect.github.com/intlify/vue-i18n/releases/tag/v11.0.0)

<!-- Release notes generated using configuration in .github/release.yml
at v11.0.0 -->

#### What's Changed

##### Deprecate Legacy API mode

The Legacy API mode was the API mode compatible with v8 for Vue 2. When
v9 was released, the Legacy API was provided to smooth the migration
from v8 to v9.

Legacy API mode will be deprecated in v11, as previous vue-i18n releases
have already provided the following to support migration to Composition
API mode

- Migration from Legacy API mode to Composition API mode, see the
[docs](https://vue-i18n.intlify.dev/guide/migration/vue3.html)
- Composition API usage, see the
[docs](https://vue-i18n.intlify.dev/guide/advanced/composition.html)

For compatibility, Legacy API mode still works in v11, but will be
removed entirely in v12, so Legacy API mode will not work after that
version.

##### Deprecate Custom Directive `v-t`

The advantage of `v-t` was that it could optimize performance using the
vue compiler transform and the pre-translation of `vue-i18n-extension`.

This feature was supported from Vue 2.
About details see the blog
[article](https://medium.com/@&#8203;kazu_pon/performance-optimization-of-vue-i18n-83099eb45c2d)

In Vue 3, due to the Composition API, the pre-translation of
[`vue-i18n-extension`](https://redirect.github.com/intlify/vue-i18n-extensions)
is now limited only for global scope.

In addition, Vue 3 Virtual DOM optimization has been introduced, and the
optimization provided by `vue-i18n-extension` is no longer very
effective. We need to require settings for SSR, the benefits of using
`v-t` have disappeared. And DX of templates using `v-t` is not good.
Custom directives do not work with key completion in editors (e.g.
vscode).

For compatibility, `v-t` mode still works in v11, but will be removed
entirely in v12, so `v-t` will not work after that version.

##### Drop `tc` and `$tc` for Legacy API mode

These APIs had already deprecated in warning about being dropped in v11.
docs
[says](https://vue-i18n.intlify.dev/guide/migration/breaking10.html#deprecate-tc-and-tc-for-legacy-api-mode)

##### Vue I18n maintenance Status

Vue I18n v8 is no longer supported after 2025. Vue I18n v9 and Vue I18n
v10 is in maintenance mode after 2025 July.

With the release of Vue I18n v11, that version will become mainstream.

The maintenance detail status of Vue I18n v9 and Vue I18n v10 is as
follows:

<img
src="https://raw.githubusercontent.com/intlify/vue-i18n/master/docs/public/lifecycle2025.svg"
/>

You can check the maintenance status on the
[docs](https://vue-i18n.intlify.dev/guide/maintenance.html)

#####  Braeking Changes

- feat!: deprecate Legacy API mode by
[@&#8203;kazupon](https://redirect.github.com/kazupon) in
[https://github.com/intlify/vue-i18n/pull/2016](https://redirect.github.com/intlify/vue-i18n/pull/2016)
- breaking: drop `$tc` and `tc` by
[@&#8203;kazupon](https://redirect.github.com/kazupon) in
[https://github.com/intlify/vue-i18n/pull/2017](https://redirect.github.com/intlify/vue-i18n/pull/2017)
- feat!: deprecate `v-t` custom directive by
[@&#8203;kazupon](https://redirect.github.com/kazupon) in
[https://github.com/intlify/vue-i18n/pull/2045](https://redirect.github.com/intlify/vue-i18n/pull/2045)

#####  Improvement Features

- fix: `tm` function should accept `DefineLocaleMessage` key type by
[@&#8203;BobbieGoede](https://redirect.github.com/BobbieGoede) in
[https://github.com/intlify/vue-i18n/pull/2014](https://redirect.github.com/intlify/vue-i18n/pull/2014)

##### 🔒 Security Fixes

- fix: security vulnerability fix porting by
[@&#8203;kazupon](https://redirect.github.com/kazupon) in
[https://github.com/intlify/vue-i18n/pull/2034](https://redirect.github.com/intlify/vue-i18n/pull/2034)

##### 📝️ Documentations

- Change config prop for quasar flags by
[@&#8203;chrissyast](https://redirect.github.com/chrissyast) in
[https://github.com/intlify/vue-i18n/pull/2003](https://redirect.github.com/intlify/vue-i18n/pull/2003)
- docs: Pluralization Page by
[@&#8203;Sammuel09](https://redirect.github.com/Sammuel09) in
[https://github.com/intlify/vue-i18n/pull/1998](https://redirect.github.com/intlify/vue-i18n/pull/1998)
- docs: fix composition section by
[@&#8203;Sammuel09](https://redirect.github.com/Sammuel09) in
[https://github.com/intlify/vue-i18n/pull/2008](https://redirect.github.com/intlify/vue-i18n/pull/2008)
- fix(docs): correct output in composition api example by
[@&#8203;pejeio](https://redirect.github.com/pejeio) in
[https://github.com/intlify/vue-i18n/pull/2012](https://redirect.github.com/intlify/vue-i18n/pull/2012)
- docs: not use deprecated api by
[@&#8203;kazupon](https://redirect.github.com/kazupon) in
[https://github.com/intlify/vue-i18n/pull/2013](https://redirect.github.com/intlify/vue-i18n/pull/2013)
- docs: fix wrong plural example by
[@&#8203;kazupon](https://redirect.github.com/kazupon) in
[https://github.com/intlify/vue-i18n/pull/2033](https://redirect.github.com/intlify/vue-i18n/pull/2033)
- docx(pluralization.md): Correct spelling from 'gloal' to 'global' by
[@&#8203;PuppyOne](https://redirect.github.com/PuppyOne) in
[https://github.com/intlify/vue-i18n/pull/2038](https://redirect.github.com/intlify/vue-i18n/pull/2038)
- Fix typo by [@&#8203;shaedrich](https://redirect.github.com/shaedrich)
in
[https://github.com/intlify/vue-i18n/pull/2040](https://redirect.github.com/intlify/vue-i18n/pull/2040)
- Fix another typo by
[@&#8203;shaedrich](https://redirect.github.com/shaedrich) in
[https://github.com/intlify/vue-i18n/pull/2041](https://redirect.github.com/intlify/vue-i18n/pull/2041)
- docs: add maintenance status by
[@&#8203;kazupon](https://redirect.github.com/kazupon) in
[https://github.com/intlify/vue-i18n/pull/2044](https://redirect.github.com/intlify/vue-i18n/pull/2044)

#### 👋 New Contributors

- [@&#8203;chrissyast](https://redirect.github.com/chrissyast) made
their first contribution in
[https://github.com/intlify/vue-i18n/pull/2003](https://redirect.github.com/intlify/vue-i18n/pull/2003)
- [@&#8203;Sammuel09](https://redirect.github.com/Sammuel09) made their
first contribution in
[https://github.com/intlify/vue-i18n/pull/1998](https://redirect.github.com/intlify/vue-i18n/pull/1998)
- [@&#8203;pejeio](https://redirect.github.com/pejeio) made their first
contribution in
[https://github.com/intlify/vue-i18n/pull/2012](https://redirect.github.com/intlify/vue-i18n/pull/2012)
- [@&#8203;PuppyOne](https://redirect.github.com/PuppyOne) made their
first contribution in
[https://github.com/intlify/vue-i18n/pull/2038](https://redirect.github.com/intlify/vue-i18n/pull/2038)
- [@&#8203;shaedrich](https://redirect.github.com/shaedrich) made their
first contribution in
[https://github.com/intlify/vue-i18n/pull/2040](https://redirect.github.com/intlify/vue-i18n/pull/2040)

**Full Changelog**:
https://github.com/intlify/vue-i18n/compare/v10.0.4...v11.0.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-20 15:56:01 -04:00
renovate[bot]
9ce10a72b2 fix(deps): update vueuse monorepo to v13 (major) (#1262)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@vueuse/components](https://redirect.github.com/vueuse/vueuse/tree/main/packages/components#readme)
([source](https://redirect.github.com/vueuse/vueuse/tree/HEAD/packages/components))
| [`^12.0.0` ->
`^13.0.0`](https://renovatebot.com/diffs/npm/@vueuse%2fcomponents/12.8.2/13.0.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vueuse%2fcomponents/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vueuse%2fcomponents/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vueuse%2fcomponents/12.8.2/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vueuse%2fcomponents/12.8.2/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@vueuse/core](https://redirect.github.com/vueuse/vueuse)
([source](https://redirect.github.com/vueuse/vueuse/tree/HEAD/packages/core))
| [`^12.0.0` ->
`^13.0.0`](https://renovatebot.com/diffs/npm/@vueuse%2fcore/12.8.2/13.0.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vueuse%2fcore/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vueuse%2fcore/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vueuse%2fcore/12.8.2/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vueuse%2fcore/12.8.2/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@vueuse/integrations](https://redirect.github.com/vueuse/vueuse/tree/main/packages/integrations#readme)
([source](https://redirect.github.com/vueuse/vueuse/tree/HEAD/packages/integrations))
| [`^12.0.0` ->
`^13.0.0`](https://renovatebot.com/diffs/npm/@vueuse%2fintegrations/12.8.2/13.0.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vueuse%2fintegrations/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vueuse%2fintegrations/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vueuse%2fintegrations/12.8.2/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vueuse%2fintegrations/12.8.2/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@vueuse/nuxt](https://redirect.github.com/vueuse/vueuse/tree/main/packages/nuxt#readme)
([source](https://redirect.github.com/vueuse/vueuse/tree/HEAD/packages/nuxt))
| [`^12.0.0` ->
`^13.0.0`](https://renovatebot.com/diffs/npm/@vueuse%2fnuxt/12.8.2/13.0.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vueuse%2fnuxt/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vueuse%2fnuxt/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vueuse%2fnuxt/12.8.2/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vueuse%2fnuxt/12.8.2/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>vueuse/vueuse (@&#8203;vueuse/components)</summary>

###
[`v13.0.0`](https://redirect.github.com/vueuse/vueuse/releases/tag/v13.0.0)

[Compare
Source](https://redirect.github.com/vueuse/vueuse/compare/v12.8.2...v13.0.0)

#####    🚨 Breaking Changes

- Drop CJS build, now it's ESM-only  -  by
[@&#8203;antfu](https://redirect.github.com/antfu) in
[https://github.com/vueuse/vueuse/issues/4581](https://redirect.github.com/vueuse/vueuse/issues/4581)
[<samp>(5e046)</samp>](https://redirect.github.com/vueuse/vueuse/commit/5e0467bf)

#####     [View changes on
GitHub](https://redirect.github.com/vueuse/vueuse/compare/v12.8.2...v13.0.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-20 15:03:30 -04:00
Zack Spear
f3e6a0011e feat: ReplaceKey functionality in Registration and Update pages (#1246)
- Handles auto-extensions key check and install of extend license key
with new OS Updates Expiration date

Related to https://github.com/unraid/webgui/pull/2071 but not 100%
dependent on them.

@elibosley, do we want to use the `force` param on the `check()` method
for either of these pages?

Additionally, what do you think about any potential integration with
`UnraidCheck.php` – which is used for the UPC's "Check for Updates"
button and the user configured automatically scheduled update check?

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced plugin registration and update processes with an integrated
key validation step that verifies system parameters automatically.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---
- To see the specific tasks where the Asana app for GitHub is being
used, see below:
  - https://app.asana.com/0/0/1209573221367688
2025-03-20 14:50:20 -04:00
renovate[bot]
cb2020dee6 fix(deps): update dependency shadcn-vue to v1 (#1259)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [shadcn-vue](https://redirect.github.com/unovue/shadcn-vue)
([source](https://redirect.github.com/unovue/shadcn-vue/tree/HEAD/packages/cli))
| [`^0.11.3` ->
`^1.0.0`](https://renovatebot.com/diffs/npm/shadcn-vue/0.11.4/1.0.3) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/shadcn-vue/1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/shadcn-vue/1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/shadcn-vue/0.11.4/1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/shadcn-vue/0.11.4/1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>unovue/shadcn-vue (shadcn-vue)</summary>

###
[`v1.0.3`](https://redirect.github.com/unovue/shadcn-vue/releases/tag/v1.0.3)

[Compare
Source](https://redirect.github.com/unovue/shadcn-vue/compare/v1.0.2...v1.0.3)

#####    🐞 Bug Fixes

- Tags input with combobox demo  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia)
[<samp>(15bd4)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/15bd4314)
- Remove type inference for default valueformmater due to upstream
compiler bug  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia)
[<samp>(098fe)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/098fe5ad)
- Transform js issue  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia)
[<samp>(b1e49)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/b1e49fe6)

#####     [View changes on
GitHub](https://redirect.github.com/unovue/shadcn-vue/compare/v1.0.2...v1.0.3)

###
[`v1.0.2`](https://redirect.github.com/unovue/shadcn-vue/releases/tag/v1.0.2)

[Compare
Source](https://redirect.github.com/unovue/shadcn-vue/compare/v1.0.1...v1.0.2)

#####    🐞 Bug Fixes

- AvatarImage to have slots  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia)
[<samp>(1c9c5)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/1c9c5445)
- Old `checked` api  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia)
[<samp>(239ff)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/239ff691)
- Js detype error when missing local reference to props  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia)
[<samp>(f00c0)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/f00c0de0)
- **Chart**: Invalid chart legend size  -  by
[@&#8203;hooray](https://redirect.github.com/hooray) and
[@&#8203;zernonia](https://redirect.github.com/zernonia) in
[https://github.com/unovue/shadcn-vue/issues/997](https://redirect.github.com/unovue/shadcn-vue/issues/997)
[<samp>(4f3e8)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/4f3e829f)
- **Demo**: Clear input field after sending message in CardChat.vue  - 
by [@&#8203;IceyWu](https://redirect.github.com/IceyWu) in
[https://github.com/unovue/shadcn-vue/issues/959](https://redirect.github.com/unovue/shadcn-vue/issues/959)
[<samp>(6aaa1)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/6aaa1dd9)
- **registry**: Button default styling  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia)
[<samp>(6a544)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/6a544f99)

#####     [View changes on
GitHub](https://redirect.github.com/unovue/shadcn-vue/compare/v1.0.1...v1.0.2)

###
[`v1.0.1`](https://redirect.github.com/unovue/shadcn-vue/releases/tag/v1.0.1)

[Compare
Source](https://redirect.github.com/unovue/shadcn-vue/compare/v1.0.0...v1.0.1)

#####    🐞 Bug Fixes

- **CLI**: Init, support js, update docs  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia) in
[https://github.com/unovue/shadcn-vue/issues/1053](https://redirect.github.com/unovue/shadcn-vue/issues/1053)
[<samp>(cdfe2)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/cdfe2e8e)

#####     [View changes on
GitHub](https://redirect.github.com/unovue/shadcn-vue/compare/v1.0.0...v1.0.1)

###
[`v1.0.0`](https://redirect.github.com/unovue/shadcn-vue/releases/tag/v1.0.0)

[Compare
Source](https://redirect.github.com/unovue/shadcn-vue/compare/v0.11.4...v1.0.0)

#####    🚀 Features

- Reka-ui & updated cli  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia) in
[https://github.com/unovue/shadcn-vue/issues/917](https://redirect.github.com/unovue/shadcn-vue/issues/917)
[<samp>(bc6da)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/bc6dae3d)

#####     [View changes on
GitHub](https://redirect.github.com/unovue/shadcn-vue/compare/v0.11.4...v1.0.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-20 10:29:16 -04:00
renovate[bot]
db189abec4 chore(deps): update dependency @types/pify to v6 (#1228)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| @&#8203;types/pify | [`^5.0.4` ->
`^6.0.0`](https://renovatebot.com/diffs/npm/@types%2fpify/5.0.4/6.1.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fpify/6.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fpify/6.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fpify/5.0.4/6.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fpify/5.0.4/6.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-20 10:25:18 -04:00
renovate[bot]
d8afc8f4c9 fix(deps): update dependency pm2 to v6 (#1258)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [pm2](http://pm2.keymetrics.io/)
([source](https://redirect.github.com/Unitech/pm2)) | [`^5.4.2` ->
`^6.0.0`](https://renovatebot.com/diffs/npm/pm2/5.4.3/6.0.5) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/pm2/6.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/pm2/6.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/pm2/5.4.3/6.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pm2/5.4.3/6.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>Unitech/pm2 (pm2)</summary>

###
[`v6.0.5`](https://redirect.github.com/Unitech/pm2/blob/HEAD/CHANGELOG.md#605)

[Compare
Source](5e20239d63...v6.0.5)

- Bun support - Fixes
[#&#8203;5893](https://redirect.github.com/Unitech/pm2/issues/5893)
[#&#8203;5774](https://redirect.github.com/Unitech/pm2/issues/5774)
[#&#8203;5682](https://redirect.github.com/Unitech/pm2/issues/5682)
[#&#8203;5675](https://redirect.github.com/Unitech/pm2/issues/5675)
[#&#8203;5777](https://redirect.github.com/Unitech/pm2/issues/5777)
- Disable git parsing by default
[#&#8203;5909](https://redirect.github.com/Unitech/pm2/issues/5909)
[#&#8203;2182](https://redirect.github.com/Unitech/pm2/issues/2182)
[#&#8203;5801](https://redirect.github.com/Unitech/pm2/issues/5801)
[#&#8203;5051](https://redirect.github.com/Unitech/pm2/issues/5051)
[#&#8203;5696](https://redirect.github.com/Unitech/pm2/issues/5696)
- Add WEBP content type for pm2 serve
[#&#8203;5900](https://redirect.github.com/Unitech/pm2/issues/5900)
[@&#8203;tbo47](https://redirect.github.com/tbo47)
- Enable PM2 module update from tarball
[#&#8203;5906](https://redirect.github.com/Unitech/pm2/issues/5906)
[@&#8203;AYOKINYA](https://redirect.github.com/AYOKINYA)
- Fix treekil on FreeBSD
[#&#8203;5896](https://redirect.github.com/Unitech/pm2/issues/5896)
[@&#8203;skeyby](https://redirect.github.com/skeyby)
- fix allowing to update namespaced pm2 NPM module
([@&#8203;org/module-name](https://redirect.github.com/org/module-name))
[#&#8203;5915](https://redirect.github.com/Unitech/pm2/issues/5915)
[@&#8203;endelendel](https://redirect.github.com/endelendel)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-20 10:25:06 -04:00
Pujit Mehrotra
3bfcc8e8c0 fix: node installation not persisting across reboots (#1256)
thank you to SteveHawk on the unraid.net forums for surfacing this:
https://forums.unraid.net/topic/188319-persist-node-package-download/

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Bug Fixes**
- Improved the plugin’s file-cleanup process by correcting the reference
used to identify outdated Node.js archive files. This update ensures
that file management functions as intended, contributing to more
reliable plugin behavior.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-20 10:18:40 -04:00
renovate[bot]
1892e23c22 fix(deps): update dependency pino-pretty to v13 (#1250)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [pino-pretty](https://redirect.github.com/pinojs/pino-pretty) |
[`^11.3.0` ->
`^13.0.0`](https://renovatebot.com/diffs/npm/pino-pretty/11.3.0/13.0.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/pino-pretty/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/pino-pretty/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/pino-pretty/11.3.0/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pino-pretty/11.3.0/13.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>pinojs/pino-pretty (pino-pretty)</summary>

###
[`v13.0.0`](https://redirect.github.com/pinojs/pino-pretty/releases/tag/v13.0.0)

[Compare
Source](https://redirect.github.com/pinojs/pino-pretty/compare/v12.1.0...v13.0.0)

#### What's Changed

- chore: replace readable-stream with built-in stream by
[@&#8203;benmccann](https://redirect.github.com/benmccann) in
[https://github.com/pinojs/pino-pretty/pull/542](https://redirect.github.com/pinojs/pino-pretty/pull/542)

#### New Contributors

- [@&#8203;benmccann](https://redirect.github.com/benmccann) made their
first contribution in
[https://github.com/pinojs/pino-pretty/pull/542](https://redirect.github.com/pinojs/pino-pretty/pull/542)

**Full Changelog**:
https://github.com/pinojs/pino-pretty/compare/v12.1.0...v13.0.0

###
[`v12.1.0`](https://redirect.github.com/pinojs/pino-pretty/releases/tag/v12.1.0)

[Compare
Source](https://redirect.github.com/pinojs/pino-pretty/compare/v12.0.0...v12.1.0)

#### What's Changed

- fix: unescape \ for levelKey by
[@&#8203;eliw00d](https://redirect.github.com/eliw00d) in
[https://github.com/pinojs/pino-pretty/pull/538](https://redirect.github.com/pinojs/pino-pretty/pull/538)

**Full Changelog**:
https://github.com/pinojs/pino-pretty/compare/v12.0.0...v12.1.0

###
[`v12.0.0`](https://redirect.github.com/pinojs/pino-pretty/releases/tag/v12.0.0)

[Compare
Source](https://redirect.github.com/pinojs/pino-pretty/compare/v11.3.0...v12.0.0)

#### What's Changed

- build(deps-dev): lock typescript minor version by
[@&#8203;Fdawgs](https://redirect.github.com/Fdawgs) in
[https://github.com/pinojs/pino-pretty/pull/534](https://redirect.github.com/pinojs/pino-pretty/pull/534)
- Bump typescript from 5.0.4 to 5.6.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/pinojs/pino-pretty/pull/535](https://redirect.github.com/pinojs/pino-pretty/pull/535)
- Drop support for Node.js 14 & 16 by
[@&#8203;eliw00d](https://redirect.github.com/eliw00d) in
[https://github.com/pinojs/pino-pretty/pull/540](https://redirect.github.com/pinojs/pino-pretty/pull/540)

#### New Contributors

- [@&#8203;eliw00d](https://redirect.github.com/eliw00d) made their
first contribution in
[https://github.com/pinojs/pino-pretty/pull/540](https://redirect.github.com/pinojs/pino-pretty/pull/540)

**Full Changelog**:
https://github.com/pinojs/pino-pretty/compare/v11.3.0...v12.0.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-19 22:18:44 -04:00
renovate[bot]
03ece335b8 fix(deps): update dependency jose to v6 (#1248)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [jose](https://redirect.github.com/panva/jose) | [`^5.9.6` ->
`^6.0.0`](https://renovatebot.com/diffs/npm/jose/5.10.0/6.0.10) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/jose/6.0.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jose/6.0.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jose/5.10.0/6.0.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jose/5.10.0/6.0.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>panva/jose (jose)</summary>

###
[`v6.0.10`](https://redirect.github.com/panva/jose/blob/HEAD/CHANGELOG.md#6010-2025-03-12)

[Compare
Source](https://redirect.github.com/panva/jose/compare/v6.0.9...v6.0.10)

##### Refactor

- removed unused claims methods
([74719cf](74719cfcfb))
- reorganize jwt claim set utils
([1f12d88](1f12d88ee8))

###
[`v6.0.9`](https://redirect.github.com/panva/jose/blob/HEAD/CHANGELOG.md#609-2025-03-11)

[Compare
Source](https://redirect.github.com/panva/jose/compare/v6.0.8...v6.0.9)

##### Documentation

- add more symbol document, ignore ts-private fields
([8b73687](8b73687595))
- bump typedoc
([6163a8b](6163a8b6a7))
- drop cdnjs links in README
([a910038](a9100383ab))
- drop denoland/x links in README and add jsr
([3662b9e](3662b9ec44))
- fix key export links from docs/README.md
([c8edfc2](c8edfc2941))

##### Refactor

- always assume structuredClone is present
([f7898a9](f7898a9487))
- hide internal private fields and drop ProduceJWT inheritance
([ab18881](ab18881a57))
- less objects when JWE JWT Replicated Header Parameters are used
([c763a0e](c763a0e373))

###
[`v6.0.8`](https://redirect.github.com/panva/jose/blob/HEAD/CHANGELOG.md#608-2025-02-26)

[Compare
Source](https://redirect.github.com/panva/jose/compare/v6.0.7...v6.0.8)

##### Fixes

- export \[customFetch] symbol from the default entrypoint
([1615614](1615614964)),
closes [#&#8203;762](https://redirect.github.com/panva/jose/issues/762)

###
[`v6.0.7`](https://redirect.github.com/panva/jose/blob/HEAD/CHANGELOG.md#607-2025-02-25)

[Compare
Source](https://redirect.github.com/panva/jose/compare/v6.0.6...v6.0.7)

##### Documentation

- improve generate key/secret and import function descriptions
([cd06359](cd06359597))

##### Fixes

- use \[customFetch] when provided to createRemoteJWKSet
([35f6509](35f6509ff4)),
closes [#&#8203;760](https://redirect.github.com/panva/jose/issues/760)

###
[`v6.0.6`](https://redirect.github.com/panva/jose/blob/HEAD/CHANGELOG.md#606-2025-02-23)

[Compare
Source](https://redirect.github.com/panva/jose/compare/v6.0.5...v6.0.6)

##### Refactor

- move base64url around
([e1350ef](e1350eff87))

##### Documentation

- add various exported symbol descriptions
([3b8ff71](3b8ff717ad))
- add various exported symbol descriptions
([fc4e7da](fc4e7dab4c))
- add various exported symbol descriptions
([74f02c8](74f02c833e))
- update base64url function descriptions
([03d72c8](03d72c8a55))

###
[`v6.0.5`](https://redirect.github.com/panva/jose/blob/HEAD/CHANGELOG.md#605-2025-02-23)

[Compare
Source](https://redirect.github.com/panva/jose/compare/v6.0.4...v6.0.5)

##### Refactor

- **types:** make JWKParameters.kty compatible with
[@&#8203;types/node](https://redirect.github.com/types/node) and
[@&#8203;types/web](https://redirect.github.com/types/web)
([bb6ccfe](bb6ccfed3e))

##### Documentation

- add various exported symbol descriptions
([f52c2ff](f52c2ff0c3))

###
[`v6.0.4`](https://redirect.github.com/panva/jose/blob/HEAD/CHANGELOG.md#604-2025-02-22)

[Compare
Source](https://redirect.github.com/panva/jose/compare/v6.0.3...v6.0.4)

##### Refactor

- optimize base64 with tc39/proposal-arraybuffer-base64
([8a0da69](8a0da6968e)),
closes [#&#8203;752](https://redirect.github.com/panva/jose/issues/752)
- update getSPKI to use crypto.createPublicKey when available
([92392a0](92392a0aa2)),
closes [#&#8203;752](https://redirect.github.com/panva/jose/issues/752)
- use Double HMAC pattern for AES-CBC tag comparison
([f3ba4c7](f3ba4c715f)),
closes [#&#8203;752](https://redirect.github.com/panva/jose/issues/752)

###
[`v6.0.3`](https://redirect.github.com/panva/jose/blob/HEAD/CHANGELOG.md#603-2025-02-22)

[Compare
Source](https://redirect.github.com/panva/jose/compare/v6.0.2...v6.0.3)

##### Documentation

- remove root module tag so that README.md shows up on jsr.io
([ee70698](ee7069818b))

###
[`v6.0.2`](https://redirect.github.com/panva/jose/blob/HEAD/CHANGELOG.md#602-2025-02-22)

[Compare
Source](https://redirect.github.com/panva/jose/compare/v6.0.1...v6.0.2)

##### Documentation

- add module tags to all entrypoints
([a5687aa](a5687aaed4))

###
[`v6.0.1`](https://redirect.github.com/panva/jose/blob/HEAD/CHANGELOG.md#601-2025-02-22)

[Compare
Source](https://redirect.github.com/panva/jose/compare/v6.0.0...v6.0.1)

##### Fixes

- **types:** update build to include extensions in type imports
([9b96672](9b96672ef7))

###
[`v6.0.0`](https://redirect.github.com/panva/jose/blob/HEAD/CHANGELOG.md#600-2025-02-22)

[Compare
Source](https://redirect.github.com/panva/jose/compare/v5.10.0...v6.0.0)

##### ⚠ BREAKING CHANGES

-   The PEMImportOptions type interface is renamed to KeyImportOptions.
-   all builds and bundles now use ES2022 as target
- createRemoteJWKSet now uses fetch, because of that its Node.js only
options.agent property has been removed and new fetch-related options
were added
-   drop support for Ed448 and X448
- drop support for JWK key_ops and CryptoKey usages "(un)wrapKey" and
"deriveKey"
- resolved keys returned as part of verify/decrypt operations (when get
key functions are used) are always normalized to either Uint8Array /
CryptoKey depending on what's more efficient for the executed operation
-   Key "Type" Generics are removed
- CJS-style require is now only possible when require(esm) support is
present in the Node.js runtime
- private KeyObject instances can no longer be used for verify
operations
- private KeyObject instances can no longer be used for encryption
operations
- generateSecret, generateKeyPair, importPKCS8, importSPKI, importJWK,
and importX509 now yield a CryptoKey instead of a KeyObject in Node.js
-   drop support for Node.js 18.x and earlier
- runtime-specific npm releases (jose-browser-runtime,
jose-node-cjs-runtime, and jose-node-esm-runtime) are no longer
maintained or supported
-   removed secp256k1 JWS support
-   removed deprecated experimental APIs
-   removed RSA1\_5 JWE support

##### Features

- enable CryptoKey and KeyObject inputs in JWK thumbprint functions
([6fc9c44](6fc9c4461a))
- JSON Web Key is now an allowed input everywhere
([ebda967](ebda9674e9))

##### Refactor

- always use infered CryptoKey
([c4abaa2](c4abaa265e))
- backport the
[`Ed25519`](https://redirect.github.com/panva/jose/commit/Ed25519) JWS
Algorithm Identifier support
([7a94cb9](7a94cb997a))
- drop support for Ed448 and X448
([2fae1c4](2fae1c447b))
- drop support for JWK key_ops and CryptoKey usages "(un)wrapKey" and
"deriveKey"
([ef918be](ef918be8ba))
- ensure export functions continue to work with KeyObject inputs
([28e9e68](28e9e684bb))
- hardcode the cryptoRuntime export since it is now always WebCryptoAPI
([e00f273](e00f2737fd))
- JWK import extractable default for public keys is now true
([64dcebe](64dcebef36))
- PEM import extractable default for public keys is now true
([4e9f114](4e9f1143c7))
- removed deprecated APIs
([5352083](5352083dc6))
- removed secp256k1 JWS support
([e2b58a5](e2b58a5ca5))
- restructure src/lib and src/runtime now that runtime is fixed
([9b236ce](9b236cec4e))
- target is now ES2022 everywhere
([aa590d5](aa590d569f))
- update importJWK args to align with other import functions
([355a2dd](355a2dd33a))
- WebCryptoAPI is now the only crypto used
([161de46](161de466a2))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-19 22:18:27 -04:00
Eli Bosley
7bc9949110 fix: make scripts executable when building the plugin (#1255)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Enhanced script functionality to automatically set correct executable
permissions for files within "scripts" directories, ensuring that all
relevant scripts run as expected.
- Added symbolic link management for various Node.js binaries, improving
accessibility and organization within the application.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-19 21:13:30 -04:00
renovate[bot]
ad3906e682 fix(deps): update all non-major dependencies (#1251)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [graphql-scalars](https://redirect.github.com/Urigo/graphql-scalars) |
[`1.24.1` ->
`1.24.2`](https://renovatebot.com/diffs/npm/graphql-scalars/1.24.1/1.24.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/graphql-scalars/1.24.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/graphql-scalars/1.24.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/graphql-scalars/1.24.1/1.24.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/graphql-scalars/1.24.1/1.24.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [nestjs-pino](https://redirect.github.com/iamolegga/nestjs-pino) |
[`4.3.1` ->
`4.4.0`](https://renovatebot.com/diffs/npm/nestjs-pino/4.3.1/4.4.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/nestjs-pino/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nestjs-pino/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nestjs-pino/4.3.1/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nestjs-pino/4.3.1/4.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [pnpm](https://pnpm.io)
([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm)) |
[`10.6.4` ->
`10.6.5`](https://renovatebot.com/diffs/npm/pnpm/10.6.4/10.6.5) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/10.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/pnpm/10.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/pnpm/10.6.4/10.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/10.6.4/10.6.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vitest](https://redirect.github.com/vitest-dev/vitest)
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest))
| [`3.0.7` ->
`3.0.9`](https://renovatebot.com/diffs/npm/vitest/3.0.7/3.0.9) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/3.0.7/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/3.0.7/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [zx](https://google.github.io/zx/)
([source](https://redirect.github.com/google/zx)) | [`8.3.2` ->
`8.4.1`](https://renovatebot.com/diffs/npm/zx/8.3.2/8.4.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/zx/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/zx/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/zx/8.3.2/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/zx/8.3.2/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>Urigo/graphql-scalars (graphql-scalars)</summary>

###
[`v1.24.2`](https://redirect.github.com/Urigo/graphql-scalars/blob/HEAD/CHANGELOG.md#1242)

[Compare
Source](https://redirect.github.com/Urigo/graphql-scalars/compare/v1.24.1...v1.24.2)

##### Patch Changes

-
[#&#8203;2791](https://redirect.github.com/graphql-hive/graphql-scalars/pull/2791)

[`3e1e924`](3e1e924b93)
Thanks [@&#8203;dotansimha](https://redirect.github.com/dotansimha)! -
Enable npm provenance

</details>

<details>
<summary>iamolegga/nestjs-pino (nestjs-pino)</summary>

###
[`v4.4.0`](https://redirect.github.com/iamolegga/nestjs-pino/releases/tag/4.4.0):
: allow publishing source map files

[Compare
Source](https://redirect.github.com/iamolegga/nestjs-pino/compare/4.3.1...4.4.0)

#### What's Changed

- build(deps-dev): bump prettier from 3.5.1 to 3.5.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2255](https://redirect.github.com/iamolegga/nestjs-pino/pull/2255)
- build(deps-dev): bump
[@&#8203;eslint/js](https://redirect.github.com/eslint/js) from 9.20.0
to 9.21.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2256](https://redirect.github.com/iamolegga/nestjs-pino/pull/2256)
- build(deps-dev): bump
[@&#8203;types/node](https://redirect.github.com/types/node) from
22.13.4 to 22.13.5 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2257](https://redirect.github.com/iamolegga/nestjs-pino/pull/2257)
- build(deps-dev): bump ts-jest from 29.2.5 to 29.2.6 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2258](https://redirect.github.com/iamolegga/nestjs-pino/pull/2258)
- build(deps-dev): bump
[@&#8203;eslint/eslintrc](https://redirect.github.com/eslint/eslintrc)
from 3.2.0 to 3.3.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2261](https://redirect.github.com/iamolegga/nestjs-pino/pull/2261)
- build(deps-dev): bump
[@&#8203;eslint/compat](https://redirect.github.com/eslint/compat) from
1.2.6 to 1.2.7 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2262](https://redirect.github.com/iamolegga/nestjs-pino/pull/2262)
- build(deps-dev): bump rxjs from 7.8.1 to 7.8.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2259](https://redirect.github.com/iamolegga/nestjs-pino/pull/2259)
- build(deps-dev): bump eslint from 9.20.1 to 9.21.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2260](https://redirect.github.com/iamolegga/nestjs-pino/pull/2260)
- build(deps-dev): bump
[@&#8203;typescript-eslint/eslint-plugin](https://redirect.github.com/typescript-eslint/eslint-plugin)
from 8.24.1 to 8.25.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2263](https://redirect.github.com/iamolegga/nestjs-pino/pull/2263)
- build(deps-dev): bump
[@&#8203;typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser)
from 8.24.1 to 8.25.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2264](https://redirect.github.com/iamolegga/nestjs-pino/pull/2264)
- build(deps-dev): bump eslint-config-prettier from 10.0.1 to 10.0.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2265](https://redirect.github.com/iamolegga/nestjs-pino/pull/2265)
- build(deps-dev): bump
[@&#8203;nestjs/testing](https://redirect.github.com/nestjs/testing)
from 11.0.10 to 11.0.11 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2267](https://redirect.github.com/iamolegga/nestjs-pino/pull/2267)
- build(deps-dev): bump
[@&#8203;types/node](https://redirect.github.com/types/node) from
22.13.5 to 22.13.8 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2268](https://redirect.github.com/iamolegga/nestjs-pino/pull/2268)
- build(deps-dev): bump
[@&#8203;nestjs/platform-express](https://redirect.github.com/nestjs/platform-express)
from 11.0.10 to 11.0.11 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2269](https://redirect.github.com/iamolegga/nestjs-pino/pull/2269)
- build(deps-dev): bump prettier from 3.5.2 to 3.5.3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2271](https://redirect.github.com/iamolegga/nestjs-pino/pull/2271)
- build(deps-dev): bump
[@&#8203;nestjs/core](https://redirect.github.com/nestjs/core) from
11.0.10 to 11.0.11 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2272](https://redirect.github.com/iamolegga/nestjs-pino/pull/2272)
- build(deps-dev): bump
[@&#8203;nestjs/platform-fastify](https://redirect.github.com/nestjs/platform-fastify)
from 11.0.10 to 11.0.11 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2273](https://redirect.github.com/iamolegga/nestjs-pino/pull/2273)
- build(deps-dev): bump
[@&#8203;nestjs/common](https://redirect.github.com/nestjs/common) from
11.0.10 to 11.0.11 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2274](https://redirect.github.com/iamolegga/nestjs-pino/pull/2274)
- build(deps-dev): bump
[@&#8203;types/node](https://redirect.github.com/types/node) from
22.13.8 to 22.13.9 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2275](https://redirect.github.com/iamolegga/nestjs-pino/pull/2275)
- build(deps-dev): bump
[@&#8203;typescript-eslint/eslint-plugin](https://redirect.github.com/typescript-eslint/eslint-plugin)
from 8.25.0 to 8.26.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2276](https://redirect.github.com/iamolegga/nestjs-pino/pull/2276)
- build(deps-dev): bump
[@&#8203;typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser)
from 8.25.0 to 8.26.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2277](https://redirect.github.com/iamolegga/nestjs-pino/pull/2277)
- build(deps-dev): bump eslint from 9.21.0 to 9.22.0 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2278](https://redirect.github.com/iamolegga/nestjs-pino/pull/2278)
- build(deps-dev): bump
[@&#8203;types/node](https://redirect.github.com/types/node) from
22.13.9 to 22.13.10 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2280](https://redirect.github.com/iamolegga/nestjs-pino/pull/2280)
- build(deps-dev): bump eslint-config-prettier from 10.0.2 to 10.1.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2281](https://redirect.github.com/iamolegga/nestjs-pino/pull/2281)
- build(deps-dev): bump
[@&#8203;typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser)
from 8.26.0 to 8.26.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2284](https://redirect.github.com/iamolegga/nestjs-pino/pull/2284)
- build(deps-dev): bump
[@&#8203;typescript-eslint/eslint-plugin](https://redirect.github.com/typescript-eslint/eslint-plugin)
from 8.26.0 to 8.26.1 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2285](https://redirect.github.com/iamolegga/nestjs-pino/pull/2285)
- build(deps-dev): bump typescript from 5.7.3 to 5.8.2 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[https://github.com/iamolegga/nestjs-pino/pull/2270](https://redirect.github.com/iamolegga/nestjs-pino/pull/2270)
- chore(package): allow publishing source map files by
[@&#8203;H4ad](https://redirect.github.com/H4ad) in
[https://github.com/iamolegga/nestjs-pino/pull/2288](https://redirect.github.com/iamolegga/nestjs-pino/pull/2288)

#### New Contributors

- [@&#8203;H4ad](https://redirect.github.com/H4ad) made their first
contribution in
[https://github.com/iamolegga/nestjs-pino/pull/2288](https://redirect.github.com/iamolegga/nestjs-pino/pull/2288)

**Full Changelog**:
https://github.com/iamolegga/nestjs-pino/compare/4.3.1...4.4.0

</details>

<details>
<summary>pnpm/pnpm (pnpm)</summary>

###
[`v10.6.5`](https://redirect.github.com/pnpm/pnpm/compare/v10.6.4...v10.6.5)

[Compare
Source](https://redirect.github.com/pnpm/pnpm/compare/v10.6.4...v10.6.5)

</details>

<details>
<summary>vitest-dev/vitest (vitest)</summary>

###
[`v3.0.9`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v3.0.9)

[Compare
Source](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.8...v3.0.9)

#####    🐞 Bug Fixes

- Typings of `ctx.skip()` as `never`  -  by
[@&#8203;sirlancelot](https://redirect.github.com/sirlancelot) in
[https://github.com/vitest-dev/vitest/issues/7608](https://redirect.github.com/vitest-dev/vitest/issues/7608)
[<samp>(09f35)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/09f35301)
- Cleanup vitest in public `resolveConfig` API  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7623](https://redirect.github.com/vitest-dev/vitest/issues/7623)
[<samp>(db14a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/db14ab71)
- Fix `toHaveBeenCalledWith(asymmetricMatcher)` with `undefined`
arguments  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7624](https://redirect.github.com/vitest-dev/vitest/issues/7624)
[<samp>(0fb21)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0fb21faa)
- Race condition in RPC filesystem cache.  -  by
[@&#8203;dts](https://redirect.github.com/dts) in
[https://github.com/vitest-dev/vitest/issues/7531](https://redirect.github.com/vitest-dev/vitest/issues/7531)
[<samp>(b7f55)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b7f55261)
- Fix `getState().testPath` during collection with no isolation  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7640](https://redirect.github.com/vitest-dev/vitest/issues/7640)
[<samp>(3fb3f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3fb3fbf8)
- Support custom toString method in %s format  -  by
[@&#8203;pengooseDev](https://redirect.github.com/pengooseDev) in
[https://github.com/vitest-dev/vitest/issues/7637](https://redirect.github.com/vitest-dev/vitest/issues/7637)
[<samp>(46d93)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/46d93a2e)
-   **browser**:
- Fail playwright timeouts earlier than a test timeout  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) and
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7565](https://redirect.github.com/vitest-dev/vitest/issues/7565)
[<samp>(5eb4c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5eb4cd1f)
- Remove
[@&#8203;testing-library/dom](https://redirect.github.com/testing-library/dom)
from dependencies
[#&#8203;7555](https://redirect.github.com/vitest-dev/vitest/issues/7555))"
 -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7628](https://redirect.github.com/vitest-dev/vitest/issues/7628)
and
[https://github.com/vitest-dev/vitest/issues/7555](https://redirect.github.com/vitest-dev/vitest/issues/7555)
[<samp>(94b27)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/94b27af5)
-   **coverage**:
- Browser mode + `coverage.all`  -  by
[@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/7597](https://redirect.github.com/vitest-dev/vitest/issues/7597)
[<samp>(422ba)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/422ba66b)
-   **runner**:
- Show stacktrace on hook timeout error  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7502](https://redirect.github.com/vitest-dev/vitest/issues/7502)
[<samp>(268a1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/268a19e1)
-   **vite-node**:
- Fix source map of inlined node_modules  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7557](https://redirect.github.com/vitest-dev/vitest/issues/7557)
[<samp>(34aa3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/34aa322b)
- Fix missing `buildStart`  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7652](https://redirect.github.com/vitest-dev/vitest/issues/7652)
[<samp>(29f5a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/29f5a848)
-   **web-worker**:
- Ensure `removeEventListener` is bound to worker  -  by
[@&#8203;joelgallant](https://redirect.github.com/joelgallant) in
[https://github.com/vitest-dev/vitest/issues/7631](https://redirect.github.com/vitest-dev/vitest/issues/7631)
[<samp>(ff42b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ff42bcb3)

#####     [View changes on
GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.8...v3.0.9)

###
[`v3.0.8`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v3.0.8)

[Compare
Source](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.7...v3.0.8)

#####    🐞 Bug Fixes

- Fix fetch cache multiple writes  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7546](https://redirect.github.com/vitest-dev/vitest/issues/7546)
[<samp>(1a8b4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1a8b4337)
- Use browser.isolate instead of config.isolate  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7560](https://redirect.github.com/vitest-dev/vitest/issues/7560)
[<samp>(4b5ed)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4b5ed902)
- Remove vestigial spy stub, import directly from `@vitest/spy`  -  by
[@&#8203;mrginglymus](https://redirect.github.com/mrginglymus) in
[https://github.com/vitest-dev/vitest/issues/7575](https://redirect.github.com/vitest-dev/vitest/issues/7575)
[<samp>(7f7ff)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7f7ff11c)
- Correctly split the argv string  -  by
[@&#8203;btea](https://redirect.github.com/btea) in
[https://github.com/vitest-dev/vitest/issues/7533](https://redirect.github.com/vitest-dev/vitest/issues/7533)
[<samp>(4325a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4325ac67)
-   **browser**:
- Remove
[@&#8203;testing-library/dom](https://redirect.github.com/testing-library/dom)
from dependencies  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7555](https://redirect.github.com/vitest-dev/vitest/issues/7555)
[<samp>(5387a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5387a5b3)
- Improve source map handling for bundled files  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7534](https://redirect.github.com/vitest-dev/vitest/issues/7534)
[<samp>(e2c57)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e2c570b6)
- Print related test file and potential test in unhandled errors  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7564](https://redirect.github.com/vitest-dev/vitest/issues/7564)
[<samp>(fee90)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fee90d85)
-   **runner**:
- Fix `beforeEach/All` cleanup callback timeout  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7500](https://redirect.github.com/vitest-dev/vitest/issues/7500)
[<samp>(0c292)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0c2924b7)
- Fix and simplify `Task.suite` initialization  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7414](https://redirect.github.com/vitest-dev/vitest/issues/7414)
[<samp>(ca9ff)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ca9ffac5)
-   **snapshot**:
- Allow inline snapshot calls on same location with same snapshot  -  by
[@&#8203;jycouet](https://redirect.github.com/jycouet) and
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7464](https://redirect.github.com/vitest-dev/vitest/issues/7464)
[<samp>(d5cb8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d5cb8212)
-   **vite-node**:
- Fix `buildStart` on Vite 6  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7480](https://redirect.github.com/vitest-dev/vitest/issues/7480)
[<samp>(c0f47)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c0f47e03)

#####     [View changes on
GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.7...v3.0.8)

</details>

<details>
<summary>google/zx (zx)</summary>

###
[`v8.4.1`](https://redirect.github.com/google/zx/releases/tag/8.4.1): –
Rusty Elbow

[Compare
Source](https://redirect.github.com/google/zx/compare/8.4.0...8.4.1)

Logger enhancements are arriving in this release.
[#&#8203;1119](https://redirect.github.com/google/zx/issues/1119)
[#&#8203;1122](https://redirect.github.com/google/zx/pull/1122)
[#&#8203;1123](https://redirect.github.com/google/zx/pull/1123)
[#&#8203;1125](https://redirect.github.com/google/zx/pull/1125)

- You can customize the output by defining your own formatters for each
log entry kind.

```ts
$.log.formatters = {
  cmd: (entry: LogEntry) => `CMD: ${entry.cmd}`,
  fetch: (entry: LogEntry) => `FETCH: ${entry.url}`
  //...
}
```

- Cmd highlighter now *should* properly detect bins and arguments. If
still not, please report it in
[#&#8203;1122](https://redirect.github.com/google/zx/pull/1122)
- Switched to TS 5.8
[#&#8203;1120](https://redirect.github.com/google/zx/pull/1120)
- Applied [zizmor](https://woodruffw.github.io/zizmor/) to check GHA
workflows
[#&#8203;1126](https://redirect.github.com/google/zx/pull/1126)
- Prettier is now enabled as a pre-commit hook
[#&#8203;1118](https://redirect.github.com/google/zx/pull/1118)

###
[`v8.4.0`](https://redirect.github.com/google/zx/releases/tag/8.4.0): –
Drip Detective

[Compare
Source](https://redirect.github.com/google/zx/compare/8.3.2...8.4.0)

Try the new batch of enhancements: `npm i zx@8.4.0`
https://www.npmjs.com/package/zx/v/8.4.0

#### Changes

- The CLI option `--prefer-local` now allows linking both external
binaries and packages
[#&#8203;1116](https://redirect.github.com/google/zx/pull/1116)
[#&#8203;1117](https://redirect.github.com/google/zx/pull/1117)

```js
const cwd = tmpdir()
const external = tmpdir()
await fs.outputJson(path.join(external, 'node_modules/a/package.json'), {
  name: 'a',
  version: '1.0.0',
  type: 'module',
  exports: './index.js',
})
await fs.outputFile(
  path.join(external, 'node_modules/a/index.js'),
  `
export const a = 'AAA'
`
)
const script = `
import {a} from 'a'
console.log(a);
`
const out = await $`zx --cwd=${cwd} --prefer-local=${external} --test <<< ${script}`
assert.equal(out.stdout, 'AAA\n')
```

- The `quote` has been slightly changed for a conner case, when zx
literal gets an array.
[#&#8203;999](https://redirect.github.com/google/zx/issues/999)
[#&#8203;1113](https://redirect.github.com/google/zx/issues/1113)

```js
const p = $({prefix: '', postfix: ''})`echo ${[1, '', '*', '2']}`

// before
p.cmd //  `echo 1  $'*' 2`) 

// after
p.cmd //  `echo 1 $'' $'*' 2`) 
```

- Provided support for custom script extensions via CLI
[#&#8203;1104](https://redirect.github.com/google/zx/pull/1104)
[#&#8203;1105](https://redirect.github.com/google/zx/pull/1105)

```bash
zx script.zx           # Unknown file extension "\.zx"
zx --ext=mjs script.zx # OK
```

- Enhanced `nothrow` option to suppress any errors
[#&#8203;1108](https://redirect.github.com/google/zx/pull/1108)
[#&#8203;1109](https://redirect.github.com/google/zx/pull/1109)

```js
const err = new Error('BrokenSpawn')
const o = await $({
  nothrow: true,
  spawn() {
    throw err
  },
})`echo foo`
o.ok       // false
o.exitCode // null
o.message  // BrokenSpawn...
o.cause    // err
```

- `@types/node` and `@types/fs-extra` deps replaced with triple-slash
typing refs
[#&#8203;1102](https://redirect.github.com/google/zx/pull/1102)
- Made `ProcessOutput` iterable
[#&#8203;1101](https://redirect.github.com/google/zx/pull/1101)
- Handle inappropriate `ProcessPromise` instantiation
[#&#8203;1097](https://redirect.github.com/google/zx/pull/1097)
[#&#8203;1098](https://redirect.github.com/google/zx/pull/1098)
- Pass origin error as `ProcessOuput` cause
[#&#8203;1110](https://redirect.github.com/google/zx/pull/1110)
- Separated build and release steps
[#&#8203;1106](https://redirect.github.com/google/zx/pull/1106)
-   Internal improvements
- Introduced API bus
[#&#8203;1083](https://redirect.github.com/google/zx/pull/1083)
- Optimized `ProcessOutput` inners
[#&#8203;1096](https://redirect.github.com/google/zx/pull/1096)
[#&#8203;1095](https://redirect.github.com/google/zx/pull/1095)
- Pinned deps
[#&#8203;1099](https://redirect.github.com/google/zx/pull/1099)
[#&#8203;1100](https://redirect.github.com/google/zx/pull/1100)
- Switched to explicit `.ts` extensions for relative imports
[#&#8203;1111](https://redirect.github.com/google/zx/pull/1111)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-19 10:34:25 -04:00
Eli Bosley
a356bf03fb feat: make log viewer component dynamic (#1242)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced a new Log Viewer configuration component to enhance the
management and application of log settings.

- **Chores**
- Removed the legacy log viewer interface to streamline log management
and improve the overall user experience.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-19 10:33:12 -04:00
renovate[bot]
57a6c49f8a fix(deps): update all non-major dependencies (#1247)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nestjs/common](https://nestjs.com)
([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/common))
| [`11.0.11` ->
`11.0.12`](https://renovatebot.com/diffs/npm/@nestjs%2fcommon/11.0.11/11.0.12)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcommon/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcommon/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcommon/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcommon/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@nestjs/core](https://nestjs.com)
([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/core))
| [`11.0.11` ->
`11.0.12`](https://renovatebot.com/diffs/npm/@nestjs%2fcore/11.0.11/11.0.12)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fcore/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fcore/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fcore/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fcore/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@nestjs/platform-fastify](https://nestjs.com)
([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/platform-fastify))
| [`11.0.11` ->
`11.0.12`](https://renovatebot.com/diffs/npm/@nestjs%2fplatform-fastify/11.0.11/11.0.12)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fplatform-fastify/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fplatform-fastify/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fplatform-fastify/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fplatform-fastify/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [@nestjs/testing](https://nestjs.com)
([source](https://redirect.github.com/nestjs/nest/tree/HEAD/packages/testing))
| [`11.0.11` ->
`11.0.12`](https://renovatebot.com/diffs/npm/@nestjs%2ftesting/11.0.11/11.0.12)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2ftesting/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2ftesting/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2ftesting/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2ftesting/11.0.11/11.0.12?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vitest](https://redirect.github.com/vitest-dev/vitest)
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest))
| [`3.0.7` ->
`3.0.9`](https://renovatebot.com/diffs/npm/vitest/3.0.7/3.0.9) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/3.0.7/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/3.0.7/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [zx](https://google.github.io/zx/)
([source](https://redirect.github.com/google/zx)) | [`8.3.2` ->
`8.4.1`](https://renovatebot.com/diffs/npm/zx/8.3.2/8.4.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/zx/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/zx/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/zx/8.3.2/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/zx/8.3.2/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>nestjs/nest (@&#8203;nestjs/common)</summary>

###
[`v11.0.12`](https://redirect.github.com/nestjs/nest/compare/v11.0.11...c58f49a3cc7b48916a98dcb81764ce77950d535a)

[Compare
Source](https://redirect.github.com/nestjs/nest/compare/v11.0.11...c58f49a3cc7b48916a98dcb81764ce77950d535a)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/core)</summary>

###
[`v11.0.12`](https://redirect.github.com/nestjs/nest/compare/v11.0.11...c58f49a3cc7b48916a98dcb81764ce77950d535a)

[Compare
Source](https://redirect.github.com/nestjs/nest/compare/v11.0.11...c58f49a3cc7b48916a98dcb81764ce77950d535a)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/platform-fastify)</summary>

###
[`v11.0.12`](https://redirect.github.com/nestjs/nest/compare/v11.0.11...c58f49a3cc7b48916a98dcb81764ce77950d535a)

[Compare
Source](https://redirect.github.com/nestjs/nest/compare/v11.0.11...c58f49a3cc7b48916a98dcb81764ce77950d535a)

</details>

<details>
<summary>nestjs/nest (@&#8203;nestjs/testing)</summary>

###
[`v11.0.12`](https://redirect.github.com/nestjs/nest/compare/v11.0.11...c58f49a3cc7b48916a98dcb81764ce77950d535a)

[Compare
Source](https://redirect.github.com/nestjs/nest/compare/v11.0.11...c58f49a3cc7b48916a98dcb81764ce77950d535a)

</details>

<details>
<summary>vitest-dev/vitest (vitest)</summary>

###
[`v3.0.9`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v3.0.9)

[Compare
Source](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.8...v3.0.9)

#####    🐞 Bug Fixes

- Typings of `ctx.skip()` as `never`  -  by
[@&#8203;sirlancelot](https://redirect.github.com/sirlancelot) in
[https://github.com/vitest-dev/vitest/issues/7608](https://redirect.github.com/vitest-dev/vitest/issues/7608)
[<samp>(09f35)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/09f35301)
- Cleanup vitest in public `resolveConfig` API  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7623](https://redirect.github.com/vitest-dev/vitest/issues/7623)
[<samp>(db14a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/db14ab71)
- Fix `toHaveBeenCalledWith(asymmetricMatcher)` with `undefined`
arguments  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7624](https://redirect.github.com/vitest-dev/vitest/issues/7624)
[<samp>(0fb21)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0fb21faa)
- Race condition in RPC filesystem cache.  -  by
[@&#8203;dts](https://redirect.github.com/dts) in
[https://github.com/vitest-dev/vitest/issues/7531](https://redirect.github.com/vitest-dev/vitest/issues/7531)
[<samp>(b7f55)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b7f55261)
- Fix `getState().testPath` during collection with no isolation  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7640](https://redirect.github.com/vitest-dev/vitest/issues/7640)
[<samp>(3fb3f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3fb3fbf8)
- Support custom toString method in %s format  -  by
[@&#8203;pengooseDev](https://redirect.github.com/pengooseDev) in
[https://github.com/vitest-dev/vitest/issues/7637](https://redirect.github.com/vitest-dev/vitest/issues/7637)
[<samp>(46d93)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/46d93a2e)
-   **browser**:
- Fail playwright timeouts earlier than a test timeout  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) and
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7565](https://redirect.github.com/vitest-dev/vitest/issues/7565)
[<samp>(5eb4c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5eb4cd1f)
- Remove
[@&#8203;testing-library/dom](https://redirect.github.com/testing-library/dom)
from dependencies
[#&#8203;7555](https://redirect.github.com/vitest-dev/vitest/issues/7555))"
 -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7628](https://redirect.github.com/vitest-dev/vitest/issues/7628)
and
[https://github.com/vitest-dev/vitest/issues/7555](https://redirect.github.com/vitest-dev/vitest/issues/7555)
[<samp>(94b27)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/94b27af5)
-   **coverage**:
- Browser mode + `coverage.all`  -  by
[@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/7597](https://redirect.github.com/vitest-dev/vitest/issues/7597)
[<samp>(422ba)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/422ba66b)
-   **runner**:
- Show stacktrace on hook timeout error  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7502](https://redirect.github.com/vitest-dev/vitest/issues/7502)
[<samp>(268a1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/268a19e1)
-   **vite-node**:
- Fix source map of inlined node_modules  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7557](https://redirect.github.com/vitest-dev/vitest/issues/7557)
[<samp>(34aa3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/34aa322b)
- Fix missing `buildStart`  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7652](https://redirect.github.com/vitest-dev/vitest/issues/7652)
[<samp>(29f5a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/29f5a848)
-   **web-worker**:
- Ensure `removeEventListener` is bound to worker  -  by
[@&#8203;joelgallant](https://redirect.github.com/joelgallant) in
[https://github.com/vitest-dev/vitest/issues/7631](https://redirect.github.com/vitest-dev/vitest/issues/7631)
[<samp>(ff42b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ff42bcb3)

#####     [View changes on
GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.8...v3.0.9)

###
[`v3.0.8`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v3.0.8)

[Compare
Source](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.7...v3.0.8)

#####    🐞 Bug Fixes

- Fix fetch cache multiple writes  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7546](https://redirect.github.com/vitest-dev/vitest/issues/7546)
[<samp>(1a8b4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1a8b4337)
- Use browser.isolate instead of config.isolate  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7560](https://redirect.github.com/vitest-dev/vitest/issues/7560)
[<samp>(4b5ed)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4b5ed902)
- Remove vestigial spy stub, import directly from `@vitest/spy`  -  by
[@&#8203;mrginglymus](https://redirect.github.com/mrginglymus) in
[https://github.com/vitest-dev/vitest/issues/7575](https://redirect.github.com/vitest-dev/vitest/issues/7575)
[<samp>(7f7ff)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7f7ff11c)
- Correctly split the argv string  -  by
[@&#8203;btea](https://redirect.github.com/btea) in
[https://github.com/vitest-dev/vitest/issues/7533](https://redirect.github.com/vitest-dev/vitest/issues/7533)
[<samp>(4325a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4325ac67)
-   **browser**:
- Remove
[@&#8203;testing-library/dom](https://redirect.github.com/testing-library/dom)
from dependencies  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7555](https://redirect.github.com/vitest-dev/vitest/issues/7555)
[<samp>(5387a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5387a5b3)
- Improve source map handling for bundled files  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7534](https://redirect.github.com/vitest-dev/vitest/issues/7534)
[<samp>(e2c57)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e2c570b6)
- Print related test file and potential test in unhandled errors  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7564](https://redirect.github.com/vitest-dev/vitest/issues/7564)
[<samp>(fee90)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fee90d85)
-   **runner**:
- Fix `beforeEach/All` cleanup callback timeout  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7500](https://redirect.github.com/vitest-dev/vitest/issues/7500)
[<samp>(0c292)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0c2924b7)
- Fix and simplify `Task.suite` initialization  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7414](https://redirect.github.com/vitest-dev/vitest/issues/7414)
[<samp>(ca9ff)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ca9ffac5)
-   **snapshot**:
- Allow inline snapshot calls on same location with same snapshot  -  by
[@&#8203;jycouet](https://redirect.github.com/jycouet) and
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7464](https://redirect.github.com/vitest-dev/vitest/issues/7464)
[<samp>(d5cb8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d5cb8212)
-   **vite-node**:
- Fix `buildStart` on Vite 6  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7480](https://redirect.github.com/vitest-dev/vitest/issues/7480)
[<samp>(c0f47)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c0f47e03)

#####     [View changes on
GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.7...v3.0.8)

</details>

<details>
<summary>google/zx (zx)</summary>

###
[`v8.4.1`](https://redirect.github.com/google/zx/releases/tag/8.4.1): –
Rusty Elbow

[Compare
Source](https://redirect.github.com/google/zx/compare/8.4.0...8.4.1)

Logger enhancements are arriving in this release.
[#&#8203;1119](https://redirect.github.com/google/zx/issues/1119)
[#&#8203;1122](https://redirect.github.com/google/zx/pull/1122)
[#&#8203;1123](https://redirect.github.com/google/zx/pull/1123)
[#&#8203;1125](https://redirect.github.com/google/zx/pull/1125)

- You can customize the output by defining your own formatters for each
log entry kind.

```ts
$.log.formatters = {
  cmd: (entry: LogEntry) => `CMD: ${entry.cmd}`,
  fetch: (entry: LogEntry) => `FETCH: ${entry.url}`
  //...
}
```

- Cmd highlighter now *should* properly detect bins and arguments. If
still not, please report it in
[#&#8203;1122](https://redirect.github.com/google/zx/pull/1122)
- Switched to TS 5.8
[#&#8203;1120](https://redirect.github.com/google/zx/pull/1120)
- Applied [zizmor](https://woodruffw.github.io/zizmor/) to check GHA
workflows
[#&#8203;1126](https://redirect.github.com/google/zx/pull/1126)
- Prettier is now enabled as a pre-commit hook
[#&#8203;1118](https://redirect.github.com/google/zx/pull/1118)

###
[`v8.4.0`](https://redirect.github.com/google/zx/releases/tag/8.4.0): –
Drip Detective

[Compare
Source](https://redirect.github.com/google/zx/compare/8.3.2...8.4.0)

Try the new batch of enhancements: `npm i zx@8.4.0`
https://www.npmjs.com/package/zx/v/8.4.0

#### Changes

- The CLI option `--prefer-local` now allows linking both external
binaries and packages
[#&#8203;1116](https://redirect.github.com/google/zx/pull/1116)
[#&#8203;1117](https://redirect.github.com/google/zx/pull/1117)

```js
const cwd = tmpdir()
const external = tmpdir()
await fs.outputJson(path.join(external, 'node_modules/a/package.json'), {
  name: 'a',
  version: '1.0.0',
  type: 'module',
  exports: './index.js',
})
await fs.outputFile(
  path.join(external, 'node_modules/a/index.js'),
  `
export const a = 'AAA'
`
)
const script = `
import {a} from 'a'
console.log(a);
`
const out = await $`zx --cwd=${cwd} --prefer-local=${external} --test <<< ${script}`
assert.equal(out.stdout, 'AAA\n')
```

- The `quote` has been slightly changed for a conner case, when zx
literal gets an array.
[#&#8203;999](https://redirect.github.com/google/zx/issues/999)
[#&#8203;1113](https://redirect.github.com/google/zx/issues/1113)

```js
const p = $({prefix: '', postfix: ''})`echo ${[1, '', '*', '2']}`

// before
p.cmd //  `echo 1  $'*' 2`) 

// after
p.cmd //  `echo 1 $'' $'*' 2`) 
```

- Provided support for custom script extensions via CLI
[#&#8203;1104](https://redirect.github.com/google/zx/pull/1104)
[#&#8203;1105](https://redirect.github.com/google/zx/pull/1105)

```bash
zx script.zx           # Unknown file extension "\.zx"
zx --ext=mjs script.zx # OK
```

- Enhanced `nothrow` option to suppress any errors
[#&#8203;1108](https://redirect.github.com/google/zx/pull/1108)
[#&#8203;1109](https://redirect.github.com/google/zx/pull/1109)

```js
const err = new Error('BrokenSpawn')
const o = await $({
  nothrow: true,
  spawn() {
    throw err
  },
})`echo foo`
o.ok       // false
o.exitCode // null
o.message  // BrokenSpawn...
o.cause    // err
```

- `@types/node` and `@types/fs-extra` deps replaced with triple-slash
typing refs
[#&#8203;1102](https://redirect.github.com/google/zx/pull/1102)
- Made `ProcessOutput` iterable
[#&#8203;1101](https://redirect.github.com/google/zx/pull/1101)
- Handle inappropriate `ProcessPromise` instantiation
[#&#8203;1097](https://redirect.github.com/google/zx/pull/1097)
[#&#8203;1098](https://redirect.github.com/google/zx/pull/1098)
- Pass origin error as `ProcessOuput` cause
[#&#8203;1110](https://redirect.github.com/google/zx/pull/1110)
- Separated build and release steps
[#&#8203;1106](https://redirect.github.com/google/zx/pull/1106)
-   Internal improvements
- Introduced API bus
[#&#8203;1083](https://redirect.github.com/google/zx/pull/1083)
- Optimized `ProcessOutput` inners
[#&#8203;1096](https://redirect.github.com/google/zx/pull/1096)
[#&#8203;1095](https://redirect.github.com/google/zx/pull/1095)
- Pinned deps
[#&#8203;1099](https://redirect.github.com/google/zx/pull/1099)
[#&#8203;1100](https://redirect.github.com/google/zx/pull/1100)
- Switched to explicit `.ts` extensions for relative imports
[#&#8203;1111](https://redirect.github.com/google/zx/pull/1111)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-19 10:01:29 -04:00
renovate[bot]
9e54237670 fix(deps): update dependency @nestjs/passport to v11 (#1244)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nestjs/passport](https://redirect.github.com/nestjs/passport) |
[`^10.0.3` ->
`^11.0.0`](https://renovatebot.com/diffs/npm/@nestjs%2fpassport/10.0.3/11.0.5)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nestjs%2fpassport/11.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nestjs%2fpassport/11.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nestjs%2fpassport/10.0.3/11.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nestjs%2fpassport/10.0.3/11.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>nestjs/passport (@&#8203;nestjs/passport)</summary>

###
[`v11.0.5`](https://redirect.github.com/nestjs/passport/releases/tag/11.0.5)

[Compare
Source](https://redirect.github.com/nestjs/passport/compare/11.0.4...11.0.5)

- fix: exclude last argument only if its of type function (cb)
([`1a7123a`](https://redirect.github.com/nestjs/passport/commit/1a7123a))

###
[`v11.0.4`](https://redirect.github.com/nestjs/passport/releases/tag/11.0.4)

[Compare
Source](https://redirect.github.com/nestjs/passport/compare/11.0.3...11.0.4)

- fix: remove redundant exclude unknown type
([`7a7ea87`](https://redirect.github.com/nestjs/passport/commit/7a7ea87))
- fix: strategy ctor overload type extractor generic. Solves
[#&#8203;1857](https://redirect.github.com/nestjs/passport/issues/1857)
([`99a3245`](https://redirect.github.com/nestjs/passport/commit/99a3245))

###
[`v11.0.3`](https://redirect.github.com/nestjs/passport/releases/tag/11.0.3)

[Compare
Source](77932e11eb...11.0.3)

- fix: use all ctor params type to include overloads
[#&#8203;1857](https://redirect.github.com/nestjs/passport/issues/1857)
([`84c8838`](https://redirect.github.com/nestjs/passport/commit/84c8838))

###
[`v11.0.2`](https://redirect.github.com/nestjs/passport/compare/11.0.1...77932e11eb15dd4e8a710953c3230e1105072caa)

[Compare
Source](https://redirect.github.com/nestjs/passport/compare/11.0.1...77932e11eb15dd4e8a710953c3230e1105072caa)

###
[`v11.0.1`](https://redirect.github.com/nestjs/passport/compare/11.0.0...11.0.1)

[Compare
Source](https://redirect.github.com/nestjs/passport/compare/11.0.0...11.0.1)

###
[`v11.0.0`](https://redirect.github.com/nestjs/passport/releases/tag/11.0.0)

[Compare
Source](https://redirect.github.com/nestjs/passport/compare/10.0.3...11.0.0)

### v11.0.0

-
[https://github.com/nestjs/passport/pull/1641](https://redirect.github.com/nestjs/passport/pull/1641)
-
[https://github.com/nestjs/passport/pull/1439](https://redirect.github.com/nestjs/passport/pull/1439)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-18 16:52:09 -04:00
renovate[bot]
f56d6ce5a2 chore(deps): update dependency node to v22 (#1243)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [node](https://redirect.github.com/actions/node-versions) | uses-with
| major | `20.x` -> `22.x` |

---

### Release Notes

<details>
<summary>actions/node-versions (node)</summary>

###
[`v22.14.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.14.0-13265982013):
22.14.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.13.1-12900459766...22.14.0-13265982013)

Node.js 22.14.0

###
[`v22.13.1`](https://redirect.github.com/actions/node-versions/releases/tag/22.13.1-12900459766):
22.13.1

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.13.0-12671059536...22.13.1-12900459766)

Node.js 22.13.1

###
[`v22.13.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.13.0-12671059536):
22.13.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.12.0-12152383658...22.13.0-12671059536)

Node.js 22.13.0

###
[`v22.12.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.12.0-12152383658):
22.12.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.11.0-11593095476...22.12.0-12152383658)

Node.js 22.12.0

###
[`v22.11.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.11.0-11593095476):
22.11.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.10.0-11377615849...22.11.0-11593095476)

Node.js 22.11.0

###
[`v22.10.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.10.0-11377615849):
22.10.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.9.0-10914884886...22.10.0-11377615849)

Node.js 22.10.0

###
[`v22.9.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.9.0-10914884886):
22.9.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.8.0-10685632420...22.9.0-10914884886)

Node.js 22.9.0

###
[`v22.8.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.8.0-10685632420):
22.8.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.7.0-10511334152...22.8.0-10685632420)

Node.js 22.8.0

###
[`v22.7.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.7.0-10511334152):
22.7.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.6.0-10277432289...22.7.0-10511334152)

Node.js 22.7.0

###
[`v22.6.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.6.0-10277432289):
22.6.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.5.1-10010673511...22.6.0-10277432289)

Node.js 22.6.0

###
[`v22.5.1`](https://redirect.github.com/actions/node-versions/releases/tag/22.5.1-10010673511):
22.5.1

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.5.0-9985144103...22.5.1-10010673511)

Node.js 22.5.1

###
[`v22.5.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.5.0-9985144103):
22.5.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.4.1-9860948056...22.5.0-9985144103)

Node.js 22.5.0

###
[`v22.4.1`](https://redirect.github.com/actions/node-versions/releases/tag/22.4.1-9860948056):
22.4.1

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.4.0-9766506602...22.4.1-9860948056)

Node.js 22.4.1

###
[`v22.4.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.4.0-9766506602):
22.4.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.3.0-9569309553...22.4.0-9766506602)

Node.js 22.4.0

###
[`v22.3.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.3.0-9569309553):
22.3.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.2.0-9105861751...22.3.0-9569309553)

Node.js 22.3.0

###
[`v22.2.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.2.0-9105861751):
22.2.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.1.0-8926142033...22.2.0-9105861751)

Node.js 22.2.0

###
[`v22.1.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.1.0-8926142033):
22.1.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/22.0.0-8879734543...22.1.0-8926142033)

Node.js 22.1.0

###
[`v22.0.0`](https://redirect.github.com/actions/node-versions/releases/tag/22.0.0-8879734543):
22.0.0

[Compare
Source](https://redirect.github.com/actions/node-versions/compare/20.19.0-13838090974...22.0.0-8879734543)

Node.js 22.0.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-18 16:39:56 -04:00
renovate[bot]
590ab7327f fix(deps): update dependency ini to v5 (#1217)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [ini](https://redirect.github.com/npm/ini) | [`^4.1.2` ->
`^5.0.0`](https://renovatebot.com/diffs/npm/ini/4.1.3/5.0.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/ini/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/ini/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/ini/4.1.3/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/ini/4.1.3/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>npm/ini (ini)</summary>

###
[`v5.0.0`](https://redirect.github.com/npm/ini/blob/HEAD/CHANGELOG.md#500-2024-09-03)

[Compare
Source](https://redirect.github.com/npm/ini/compare/v4.1.3...v5.0.0)

##### ⚠️ BREAKING CHANGES

-   `ini` now supports node `^18.17.0 || >=20.5.0`

##### Bug Fixes

-
[`3eca645`](3eca645de8)
[#&#8203;279](https://redirect.github.com/npm/ini/pull/279) align to npm
10 node engine range
([@&#8203;hashtagchris](https://redirect.github.com/hashtagchris))

##### Chores

-
[`c89e209`](c89e2090d7)
[#&#8203;279](https://redirect.github.com/npm/ini/pull/279) run
template-oss-apply
([@&#8203;hashtagchris](https://redirect.github.com/hashtagchris))
-
[`fc44750`](fc447500ef)
[#&#8203;276](https://redirect.github.com/npm/ini/pull/276) bump
[@&#8203;npmcli/eslint-config](https://redirect.github.com/npmcli/eslint-config)
from 4.0.5 to 5.0.0
([@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot])
-
[`21c20bb`](21c20bb172)
[#&#8203;277](https://redirect.github.com/npm/ini/pull/277) postinstall
for dependabot template-oss PR
([@&#8203;hashtagchris](https://redirect.github.com/hashtagchris))
-
[`44b3b50`](44b3b503fd)
[#&#8203;277](https://redirect.github.com/npm/ini/pull/277) bump
[@&#8203;npmcli/template-oss](https://redirect.github.com/npmcli/template-oss)
from 4.23.1 to 4.23.3
([@&#8203;dependabot](https://redirect.github.com/dependabot)\[bot])

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xODUuNCIsInVwZGF0ZWRJblZlciI6IjM5LjE4NS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-18 16:39:36 -04:00
renovate[bot]
9d63e56374 fix(deps): update all non-major dependencies (#1236)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [vitest](https://redirect.github.com/vitest-dev/vitest)
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest))
| [`3.0.7` ->
`3.0.9`](https://renovatebot.com/diffs/npm/vitest/3.0.7/3.0.9) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/3.0.7/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/3.0.7/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vuetify](https://vuetifyjs.com)
([source](https://redirect.github.com/vuetifyjs/vuetify/tree/HEAD/packages/vuetify))
| [`3.7.17` ->
`3.7.18`](https://renovatebot.com/diffs/npm/vuetify/3.7.17/3.7.18) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vuetify/3.7.18?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vuetify/3.7.18?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vuetify/3.7.17/3.7.18?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vuetify/3.7.17/3.7.18?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [zx](https://google.github.io/zx/)
([source](https://redirect.github.com/google/zx)) | [`8.3.2` ->
`8.4.1`](https://renovatebot.com/diffs/npm/zx/8.3.2/8.4.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/zx/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/zx/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/zx/8.3.2/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/zx/8.3.2/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>vitest-dev/vitest (vitest)</summary>

###
[`v3.0.9`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v3.0.9)

[Compare
Source](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.8...v3.0.9)

#####    🐞 Bug Fixes

- Typings of `ctx.skip()` as `never`  -  by
[@&#8203;sirlancelot](https://redirect.github.com/sirlancelot) in
[https://github.com/vitest-dev/vitest/issues/7608](https://redirect.github.com/vitest-dev/vitest/issues/7608)
[<samp>(09f35)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/09f35301)
- Cleanup vitest in public `resolveConfig` API  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7623](https://redirect.github.com/vitest-dev/vitest/issues/7623)
[<samp>(db14a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/db14ab71)
- Fix `toHaveBeenCalledWith(asymmetricMatcher)` with `undefined`
arguments  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7624](https://redirect.github.com/vitest-dev/vitest/issues/7624)
[<samp>(0fb21)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0fb21faa)
- Race condition in RPC filesystem cache.  -  by
[@&#8203;dts](https://redirect.github.com/dts) in
[https://github.com/vitest-dev/vitest/issues/7531](https://redirect.github.com/vitest-dev/vitest/issues/7531)
[<samp>(b7f55)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/b7f55261)
- Fix `getState().testPath` during collection with no isolation  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7640](https://redirect.github.com/vitest-dev/vitest/issues/7640)
[<samp>(3fb3f)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/3fb3fbf8)
- Support custom toString method in %s format  -  by
[@&#8203;pengooseDev](https://redirect.github.com/pengooseDev) in
[https://github.com/vitest-dev/vitest/issues/7637](https://redirect.github.com/vitest-dev/vitest/issues/7637)
[<samp>(46d93)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/46d93a2e)
-   **browser**:
- Fail playwright timeouts earlier than a test timeout  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) and
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7565](https://redirect.github.com/vitest-dev/vitest/issues/7565)
[<samp>(5eb4c)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5eb4cd1f)
- Remove
[@&#8203;testing-library/dom](https://redirect.github.com/testing-library/dom)
from dependencies
[#&#8203;7555](https://redirect.github.com/vitest-dev/vitest/issues/7555))"
 -  by [@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7628](https://redirect.github.com/vitest-dev/vitest/issues/7628)
and
[https://github.com/vitest-dev/vitest/issues/7555](https://redirect.github.com/vitest-dev/vitest/issues/7555)
[<samp>(94b27)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/94b27af5)
-   **coverage**:
- Browser mode + `coverage.all`  -  by
[@&#8203;AriPerkkio](https://redirect.github.com/AriPerkkio) in
[https://github.com/vitest-dev/vitest/issues/7597](https://redirect.github.com/vitest-dev/vitest/issues/7597)
[<samp>(422ba)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/422ba66b)
-   **runner**:
- Show stacktrace on hook timeout error  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7502](https://redirect.github.com/vitest-dev/vitest/issues/7502)
[<samp>(268a1)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/268a19e1)
-   **vite-node**:
- Fix source map of inlined node_modules  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7557](https://redirect.github.com/vitest-dev/vitest/issues/7557)
[<samp>(34aa3)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/34aa322b)
- Fix missing `buildStart`  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7652](https://redirect.github.com/vitest-dev/vitest/issues/7652)
[<samp>(29f5a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/29f5a848)
-   **web-worker**:
- Ensure `removeEventListener` is bound to worker  -  by
[@&#8203;joelgallant](https://redirect.github.com/joelgallant) in
[https://github.com/vitest-dev/vitest/issues/7631](https://redirect.github.com/vitest-dev/vitest/issues/7631)
[<samp>(ff42b)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ff42bcb3)

#####     [View changes on
GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.8...v3.0.9)

###
[`v3.0.8`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v3.0.8)

[Compare
Source](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.7...v3.0.8)

#####    🐞 Bug Fixes

- Fix fetch cache multiple writes  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7546](https://redirect.github.com/vitest-dev/vitest/issues/7546)
[<samp>(1a8b4)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/1a8b4337)
- Use browser.isolate instead of config.isolate  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7560](https://redirect.github.com/vitest-dev/vitest/issues/7560)
[<samp>(4b5ed)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4b5ed902)
- Remove vestigial spy stub, import directly from `@vitest/spy`  -  by
[@&#8203;mrginglymus](https://redirect.github.com/mrginglymus) in
[https://github.com/vitest-dev/vitest/issues/7575](https://redirect.github.com/vitest-dev/vitest/issues/7575)
[<samp>(7f7ff)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/7f7ff11c)
- Correctly split the argv string  -  by
[@&#8203;btea](https://redirect.github.com/btea) in
[https://github.com/vitest-dev/vitest/issues/7533](https://redirect.github.com/vitest-dev/vitest/issues/7533)
[<samp>(4325a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/4325ac67)
-   **browser**:
- Remove
[@&#8203;testing-library/dom](https://redirect.github.com/testing-library/dom)
from dependencies  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7555](https://redirect.github.com/vitest-dev/vitest/issues/7555)
[<samp>(5387a)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/5387a5b3)
- Improve source map handling for bundled files  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7534](https://redirect.github.com/vitest-dev/vitest/issues/7534)
[<samp>(e2c57)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/e2c570b6)
- Print related test file and potential test in unhandled errors  -  by
[@&#8203;sheremet-va](https://redirect.github.com/sheremet-va) in
[https://github.com/vitest-dev/vitest/issues/7564](https://redirect.github.com/vitest-dev/vitest/issues/7564)
[<samp>(fee90)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/fee90d85)
-   **runner**:
- Fix `beforeEach/All` cleanup callback timeout  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7500](https://redirect.github.com/vitest-dev/vitest/issues/7500)
[<samp>(0c292)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/0c2924b7)
- Fix and simplify `Task.suite` initialization  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7414](https://redirect.github.com/vitest-dev/vitest/issues/7414)
[<samp>(ca9ff)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/ca9ffac5)
-   **snapshot**:
- Allow inline snapshot calls on same location with same snapshot  -  by
[@&#8203;jycouet](https://redirect.github.com/jycouet) and
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7464](https://redirect.github.com/vitest-dev/vitest/issues/7464)
[<samp>(d5cb8)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/d5cb8212)
-   **vite-node**:
- Fix `buildStart` on Vite 6  -  by
[@&#8203;hi-ogawa](https://redirect.github.com/hi-ogawa) in
[https://github.com/vitest-dev/vitest/issues/7480](https://redirect.github.com/vitest-dev/vitest/issues/7480)
[<samp>(c0f47)</samp>](https://redirect.github.com/vitest-dev/vitest/commit/c0f47e03)

#####     [View changes on
GitHub](https://redirect.github.com/vitest-dev/vitest/compare/v3.0.7...v3.0.8)

</details>

<details>
<summary>vuetifyjs/vuetify (vuetify)</summary>

###
[`v3.7.18`](https://redirect.github.com/vuetifyjs/vuetify/compare/v3.7.17...b210f127992253f7daaae5ea3e5a504ee515b025)

[Compare
Source](https://redirect.github.com/vuetifyjs/vuetify/compare/v3.7.17...v3.7.18)

</details>

<details>
<summary>google/zx (zx)</summary>

###
[`v8.4.1`](https://redirect.github.com/google/zx/releases/tag/8.4.1): –
Rusty Elbow

[Compare
Source](https://redirect.github.com/google/zx/compare/8.4.0...8.4.1)

Logger enhancements are arriving in this release.
[#&#8203;1119](https://redirect.github.com/google/zx/issues/1119)
[#&#8203;1122](https://redirect.github.com/google/zx/pull/1122)
[#&#8203;1123](https://redirect.github.com/google/zx/pull/1123)
[#&#8203;1125](https://redirect.github.com/google/zx/pull/1125)

- You can customize the output by defining your own formatters for each
log entry kind.

```ts
$.log.formatters = {
  cmd: (entry: LogEntry) => `CMD: ${entry.cmd}`,
  fetch: (entry: LogEntry) => `FETCH: ${entry.url}`
  //...
}
```

- Cmd highlighter now *should* properly detect bins and arguments. If
still not, please report it in
[#&#8203;1122](https://redirect.github.com/google/zx/pull/1122)
- Switched to TS 5.8
[#&#8203;1120](https://redirect.github.com/google/zx/pull/1120)
- Applied [zizmor](https://woodruffw.github.io/zizmor/) to check GHA
workflows
[#&#8203;1126](https://redirect.github.com/google/zx/pull/1126)
- Prettier is now enabled as a pre-commit hook
[#&#8203;1118](https://redirect.github.com/google/zx/pull/1118)

###
[`v8.4.0`](https://redirect.github.com/google/zx/releases/tag/8.4.0): –
Drip Detective

[Compare
Source](https://redirect.github.com/google/zx/compare/8.3.2...8.4.0)

Try the new batch of enhancements: `npm i zx@8.4.0`
https://www.npmjs.com/package/zx/v/8.4.0

#### Changes

- The CLI option `--prefer-local` now allows linking both external
binaries and packages
[#&#8203;1116](https://redirect.github.com/google/zx/pull/1116)
[#&#8203;1117](https://redirect.github.com/google/zx/pull/1117)

```js
const cwd = tmpdir()
const external = tmpdir()
await fs.outputJson(path.join(external, 'node_modules/a/package.json'), {
  name: 'a',
  version: '1.0.0',
  type: 'module',
  exports: './index.js',
})
await fs.outputFile(
  path.join(external, 'node_modules/a/index.js'),
  `
export const a = 'AAA'
`
)
const script = `
import {a} from 'a'
console.log(a);
`
const out = await $`zx --cwd=${cwd} --prefer-local=${external} --test <<< ${script}`
assert.equal(out.stdout, 'AAA\n')
```

- The `quote` has been slightly changed for a conner case, when zx
literal gets an array.
[#&#8203;999](https://redirect.github.com/google/zx/issues/999)
[#&#8203;1113](https://redirect.github.com/google/zx/issues/1113)

```js
const p = $({prefix: '', postfix: ''})`echo ${[1, '', '*', '2']}`

// before
p.cmd //  `echo 1  $'*' 2`) 

// after
p.cmd //  `echo 1 $'' $'*' 2`) 
```

- Provided support for custom script extensions via CLI
[#&#8203;1104](https://redirect.github.com/google/zx/pull/1104)
[#&#8203;1105](https://redirect.github.com/google/zx/pull/1105)

```bash
zx script.zx           # Unknown file extension "\.zx"
zx --ext=mjs script.zx # OK
```

- Enhanced `nothrow` option to suppress any errors
[#&#8203;1108](https://redirect.github.com/google/zx/pull/1108)
[#&#8203;1109](https://redirect.github.com/google/zx/pull/1109)

```js
const err = new Error('BrokenSpawn')
const o = await $({
  nothrow: true,
  spawn() {
    throw err
  },
})`echo foo`
o.ok       // false
o.exitCode // null
o.message  // BrokenSpawn...
o.cause    // err
```

- `@types/node` and `@types/fs-extra` deps replaced with triple-slash
typing refs
[#&#8203;1102](https://redirect.github.com/google/zx/pull/1102)
- Made `ProcessOutput` iterable
[#&#8203;1101](https://redirect.github.com/google/zx/pull/1101)
- Handle inappropriate `ProcessPromise` instantiation
[#&#8203;1097](https://redirect.github.com/google/zx/pull/1097)
[#&#8203;1098](https://redirect.github.com/google/zx/pull/1098)
- Pass origin error as `ProcessOuput` cause
[#&#8203;1110](https://redirect.github.com/google/zx/pull/1110)
- Separated build and release steps
[#&#8203;1106](https://redirect.github.com/google/zx/pull/1106)
-   Internal improvements
- Introduced API bus
[#&#8203;1083](https://redirect.github.com/google/zx/pull/1083)
- Optimized `ProcessOutput` inners
[#&#8203;1096](https://redirect.github.com/google/zx/pull/1096)
[#&#8203;1095](https://redirect.github.com/google/zx/pull/1095)
- Pinned deps
[#&#8203;1099](https://redirect.github.com/google/zx/pull/1099)
[#&#8203;1100](https://redirect.github.com/google/zx/pull/1100)
- Switched to explicit `.ts` extensions for relative imports
[#&#8203;1111](https://redirect.github.com/google/zx/pull/1111)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-18 16:36:33 -04:00
renovate[bot]
afa6087e95 chore(deps): update dependency eslint-plugin-vue to v10 (#1229)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [eslint-plugin-vue](https://eslint.vuejs.org)
([source](https://redirect.github.com/vuejs/eslint-plugin-vue)) |
[`^9.32.0` ->
`^10.0.0`](https://renovatebot.com/diffs/npm/eslint-plugin-vue/9.32.0/10.0.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-vue/10.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-vue/10.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-vue/9.32.0/10.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-vue/9.32.0/10.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>vuejs/eslint-plugin-vue (eslint-plugin-vue)</summary>

###
[`v10.0.0`](https://redirect.github.com/vuejs/eslint-plugin-vue/releases/tag/v10.0.0)

[Compare
Source](https://redirect.github.com/vuejs/eslint-plugin-vue/compare/v9.33.0...v10.0.0)

#### 💥 Breaking changes

-
[#&#8203;2630](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2630)
Changed Versioning Policy:
- Allow minor versions of this plugin to enhance the checks for new
features in Vue and Nuxt.
- Allow updating deprecated/reserved HTML+SVG element tag names in minor
versions, see
[#&#8203;2171](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2171).
-
[#&#8203;2645](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2645)
Removed deprecated rules (see [removed
rules](https://eslint.vuejs.org/rules/#removed)).
-
[#&#8203;2669](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2669)
Dropped support for old versions of ESLint and Node.js. New minimum
requirements:
    -   Node.js: `^18.18.0 || ^20.9.0 || >=21.1.0`
    -   ESLint: `^8.57.0 || ^9.0.0`
-   Updated configs:
-
[#&#8203;2627](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2627)
Added
[`vue/block-order`](https://eslint.vuejs.org/rules/block-order.html)
rule to recommended configs (replaces the removed
`vue/component-tags-order` rule).
-
[#&#8203;2628](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2628)
Added
[`vue/no-deprecated-delete-set`](https://eslint.vuejs.org/rules/no-deprecated-delete-set.html)
rule to vue3-essential config.
-
[#&#8203;2629](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2629)
Added
[`vue/no-deprecated-model-definition`](https://eslint.vuejs.org/rules/no-deprecated-model-definition.html)
rule to vue3-essential config.
-
[#&#8203;2640](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2640)
Added
[`vue/no-required-prop-with-default`](https://eslint.vuejs.org/rules/no-required-prop-with-default.html)
rule to recommended configs.
-
[#&#8203;2653](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2653)
Added
[`vue/valid-define-options`](https://eslint.vuejs.org/rules/valid-define-options.html)
rule to vue3-essential config.
-
[#&#8203;2674](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2674)
Removed globals from configs.
-
[#&#8203;2648](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2648)
Renamed `.eslintrc` configs (to match `eslint.config.js` config names;
see PR for comparison).
-
[#&#8203;2668](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2668)
Changed `.eslintrc` base config so that
[vue-eslint-parser](https://redirect.github.com/vuejs/vue-eslint-parser)
is only used for `.vue` files.
-
[#&#8203;2670](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2670)
Changed
[vue-eslint-parser](https://redirect.github.com/vuejs/vue-eslint-parser)
to peer dependency.
-
[#&#8203;2697](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2697)
Upgraded
[vue-eslint-parser](https://redirect.github.com/vuejs/vue-eslint-parser)
to v10.
- This includes
[https://github.com/vuejs/vue-eslint-parser/pull/195](https://redirect.github.com/vuejs/vue-eslint-parser/pull/195),
which should make the parser much faster for large TypeScript projects

-
[#&#8203;2153](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2153)
Added `slots` and `expose` to the default order of
[`vue/order-in-components`](https://eslint.vuejs.org/rules/order-in-components.html)
rule.
-
[#&#8203;2626](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2626)
Removed legacy option from
[`vue/custom-event-name-casing`](https://eslint.vuejs.org/rules/custom-event-name-casing.html)
rule.
-
[#&#8203;2655](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2655)
Removed unused `runOutsideVue` option from
[`vue/sort-keys`](https://eslint.vuejs.org/rules/sort-keys.html) rule.
-
[#&#8203;2652](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2652)
Removed `setup-compiler-macros` environments.

####  Enhancements

-
[#&#8203;2693](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2693)
Improved type resolution for generic types and improved the rules for
checking type-only macros.
-
[#&#8203;2684](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2684)
Added
[`vue/no-import-compiler-macros`](https://eslint.vuejs.org/rules/no-import-compiler-macros.html)
rule that disallows importing Vue compiler macros.
-
[#&#8203;2694](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2694)
Added `except` option to
[`vue/prefer-true-attribute-shorthand`](https://eslint.vuejs.org/rules/prefer-true-attribute-shorthand.html)
rule.
-
[#&#8203;2311](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2311)
Improved the plugin to check for objects declared with Nuxt3
[`defineNuxtComponent()`](https://nuxt.com/docs/api/utils/define-nuxt-component).

#### ⚙️ Updates

-
[#&#8203;2171](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2171)
Updated resources.
-
[#&#8203;2675](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2675)
Deprecated Vue 2 only rules. They will be removed in eslint-plugin-vue
v11.

**Full Changelog**:
https://github.com/vuejs/eslint-plugin-vue/compare/v9.33.0...v10.0.0

###
[`v9.33.0`](https://redirect.github.com/vuejs/eslint-plugin-vue/releases/tag/v9.33.0)

[Compare
Source](https://redirect.github.com/vuejs/eslint-plugin-vue/compare/v9.32.0...v9.33.0)

####  Enhancements

-
[#&#8203;2639](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2639)
Added
[`vue/no-implicit-coercion`](https://eslint.vuejs.org/rules/no-implicit-coercion.html)
rule to disallow shorthand type conversions in `<template>`.
-
[#&#8203;2680](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2680)
Improved
[`vue/no-ref-as-operand`](https://eslint.vuejs.org/rules/no-ref-as-operand.html)
rule to check `emit` payloads.
-
[#&#8203;2679](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2679)
Added `ignoreProps` option to
[`vue/prop-name-casing`](https://eslint.vuejs.org/rules/prop-name-casing.html)
rule.

#### 🐛 Bug Fixes

-
[#&#8203;2636](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2636)
Fixed crash in
[`vue/prefer-use-template-ref`](https://eslint.vuejs.org/rules/prefer-use-template-ref.html)
rule when `setup` is an arrow function.
-
[#&#8203;2682](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2682)
Fixed regex matching order in
[`vue/no-bare-strings-in-template`](https://eslint.vuejs.org/rules/no-bare-strings-in-template.html)
rule.
-
[#&#8203;2683](https://redirect.github.com/vuejs/eslint-plugin-vue/issues/2683)
Fixed false positives for union type prop definitions in
[`vue/max-props`](https://eslint.vuejs.org/rules/max-props.html) rule.

**Full Changelog**:
https://github.com/vuejs/eslint-plugin-vue/compare/v9.32.0...v9.33.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-18 16:36:12 -04:00
renovate[bot]
c9789ac1f2 fix(deps): update dependency graphql-subscriptions to v3 (#1209)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[graphql-subscriptions](https://redirect.github.com/apollographql/graphql-subscriptions)
| [`^2.0.0` ->
`^3.0.0`](https://renovatebot.com/diffs/npm/graphql-subscriptions/2.0.0/3.0.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/graphql-subscriptions/3.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/graphql-subscriptions/3.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/graphql-subscriptions/2.0.0/3.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/graphql-subscriptions/2.0.0/3.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>apollographql/graphql-subscriptions
(graphql-subscriptions)</summary>

###
[`v3.0.0`](https://redirect.github.com/apollographql/graphql-subscriptions/blob/HEAD/CHANGELOG.md#300)

[Compare
Source](https://redirect.github.com/apollographql/graphql-subscriptions/compare/v2.0.0...v3.0.0)

- **\[BREAKING]** Replace `iterall` use with native
`Symbol.asyncIterator`. `PubSubEngine.asyncIterator` is now
`PubSubEngine.asyncIterableIterator`. <br/>
[@&#8203;n1ru4l](https://redirect.github.com/n1ru4l) in
[#&#8203;232](https://redirect.github.com/apollographql/graphql-subscriptions/pull/232)
-   Add an optional generic type map to `PubSub`. <br/>
[@&#8203;cursorsdottsx](https://redirect.github.com/cursorsdottsx) in
[#&#8203;245](https://redirect.github.com/apollographql/graphql-subscriptions/pull/245)
-   Support `readonly` arrays of event names. <br/>
[@&#8203;rh389](https://redirect.github.com/rh389) in
[#&#8203;234](https://redirect.github.com/apollographql/graphql-subscriptions/pull/234)
- Support returning a Promise of an `AsyncIterator` as the `withFilter`
resolver function. <br/>
[@&#8203;maclockard](https://redirect.github.com/maclockard) in
[#&#8203;220](https://redirect.github.com/apollographql/graphql-subscriptions/pull/220)
-   `withFilter` TypeScript improvements. <br/>
[@&#8203;HofmannZ](https://redirect.github.com/HofmannZ) in
[#&#8203;230](https://redirect.github.com/apollographql/graphql-subscriptions/pull/230)
- `withFilter` returns `AsyncIterableIterator` for compatibility with
Apollo Server subscriptions. <br/>
[@&#8203;tninesling](https://redirect.github.com/tninesling) in
[#&#8203;276](https://redirect.github.com/apollographql/graphql-subscriptions/pull/276)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Eli Bosley <ekbosley@gmail.com>
2025-03-18 16:35:56 -04:00
github-actions[bot]
14ff3398ba chore(main): release 4.3.1 (#1239)
🤖 I have created a release *beep* *boop*
---


## [4.3.1](https://github.com/unraid/api/compare/v4.3.0...v4.3.1)
(2025-03-18)


### Bug Fixes

* stepper fixes ([#1240](https://github.com/unraid/api/issues/1240))
([6c042cb](6c042cbe01))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-18 13:23:26 -07:00
Eli Bosley
6c042cbe01 fix: stepper fixes (#1240)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Refactor**
- Streamlined the activation steps display with improved conditional
rendering and enhanced interactive button styling.
- **New Features**
- Introduced a new welcome page featuring a dummy server switcher and
refreshed welcome modal.
- Expanded the activation interface with a new activation code section
for clearer navigation.
- **Chores**
  - Removed the welcome modal from the home page to simplify the layout.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Zack Spear <hi@zackspear.com>
2025-03-18 16:21:40 -04:00
github-actions[bot]
3380929c04 chore(main): release 4.3.0 (#1237)
🤖 I have created a release *beep* *boop*
---


## [4.3.0](https://github.com/unraid/api/compare/v4.2.1...v4.3.0)
(2025-03-18)


### Features

* update production release flow to validate less strictly
([#1238](https://github.com/unraid/api/issues/1238))
([bd69b33](bd69b3383f))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-18 11:53:30 -04:00
Eli Bosley
bd69b3383f feat: update production release flow to validate less strictly (#1238)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Bug Fixes**
- Enhanced error handling during plugin file validation to ensure that
any invalid XML inputs are promptly flagged and processed gracefully.

- **Chores**
- Updated the release workflow configuration to utilize a more flexible
XML parsing approach, improving overall validation stability.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-18 11:52:43 -04:00
github-actions[bot]
a0021bf682 chore(main): release 4.2.1 (#1235)
🤖 I have created a release *beep* *boop*
---


## [4.2.1](https://github.com/unraid/api/compare/v4.2.0...v4.2.1)
(2025-03-18)


### Bug Fixes

* **deps:** update all non-major dependencies
([#1192](https://github.com/unraid/api/issues/1192))
([b5f3a37](b5f3a37863))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-18 11:29:39 -04:00
renovate[bot]
b5f3a37863 fix(deps): update all non-major dependencies (#1192)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type |
Update |
|---|---|---|---|---|---|---|---|
| [@apollo/client](https://www.apollographql.com/docs/react/)
([source](https://redirect.github.com/apollographql/apollo-client)) |
[`3.13.1` ->
`3.13.4`](https://renovatebot.com/diffs/npm/@apollo%2fclient/3.13.1/3.13.4)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@apollo%2fclient/3.13.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@apollo%2fclient/3.13.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@apollo%2fclient/3.13.1/3.13.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@apollo%2fclient/3.13.1/3.13.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [@eslint/js](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint/tree/HEAD/packages/js))
| [`9.21.0` ->
`9.22.0`](https://renovatebot.com/diffs/npm/@eslint%2fjs/9.21.0/9.22.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@eslint%2fjs/9.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@eslint%2fjs/9.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@eslint%2fjs/9.21.0/9.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@eslint%2fjs/9.21.0/9.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[@graphql-codegen/client-preset](https://redirect.github.com/dotansimha/graphql-code-generator)
([source](https://redirect.github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/presets/client))
| [`4.6.3` ->
`4.7.0`](https://renovatebot.com/diffs/npm/@graphql-codegen%2fclient-preset/4.6.3/4.7.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-codegen%2fclient-preset/4.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-codegen%2fclient-preset/4.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-codegen%2fclient-preset/4.6.3/4.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-codegen%2fclient-preset/4.6.3/4.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[@graphql-codegen/client-preset](https://redirect.github.com/dotansimha/graphql-code-generator)
([source](https://redirect.github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/presets/client))
| [`4.6.3` ->
`4.7.0`](https://renovatebot.com/diffs/npm/@graphql-codegen%2fclient-preset/4.6.3/4.7.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-codegen%2fclient-preset/4.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-codegen%2fclient-preset/4.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-codegen%2fclient-preset/4.6.3/4.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-codegen%2fclient-preset/4.6.3/4.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
|
[@graphql-codegen/typed-document-node](https://redirect.github.com/dotansimha/graphql-code-generator)
([source](https://redirect.github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/plugins/typescript/typed-document-node))
| [`5.0.14` ->
`5.1.0`](https://renovatebot.com/diffs/npm/@graphql-codegen%2ftyped-document-node/5.0.14/5.1.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-codegen%2ftyped-document-node/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-codegen%2ftyped-document-node/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-codegen%2ftyped-document-node/5.0.14/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-codegen%2ftyped-document-node/5.0.14/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[@graphql-codegen/typescript](https://redirect.github.com/dotansimha/graphql-code-generator)
([source](https://redirect.github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/plugins/typescript/typescript))
| [`4.1.4` ->
`4.1.5`](https://renovatebot.com/diffs/npm/@graphql-codegen%2ftypescript/4.1.4/4.1.5)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-codegen%2ftypescript/4.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-codegen%2ftypescript/4.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-codegen%2ftypescript/4.1.4/4.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-codegen%2ftypescript/4.1.4/4.1.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
|
[@graphql-codegen/typescript-operations](https://redirect.github.com/dotansimha/graphql-code-generator)
([source](https://redirect.github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/plugins/typescript/operations))
| [`4.5.0` ->
`4.5.1`](https://renovatebot.com/diffs/npm/@graphql-codegen%2ftypescript-operations/4.5.0/4.5.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-codegen%2ftypescript-operations/4.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-codegen%2ftypescript-operations/4.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-codegen%2ftypescript-operations/4.5.0/4.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-codegen%2ftypescript-operations/4.5.0/4.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
|
[@graphql-codegen/typescript-resolvers](https://redirect.github.com/dotansimha/graphql-code-generator)
([source](https://redirect.github.com/dotansimha/graphql-code-generator/tree/HEAD/packages/plugins/typescript/resolvers))
| [`4.4.3` ->
`4.4.4`](https://renovatebot.com/diffs/npm/@graphql-codegen%2ftypescript-resolvers/4.4.3/4.4.4)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-codegen%2ftypescript-resolvers/4.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-codegen%2ftypescript-resolvers/4.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-codegen%2ftypescript-resolvers/4.4.3/4.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-codegen%2ftypescript-resolvers/4.4.3/4.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
|
[@graphql-tools/merge](https://redirect.github.com/ardatan/graphql-tools)
([source](https://redirect.github.com/ardatan/graphql-tools/tree/HEAD/packages/merge))
| [`9.0.20` ->
`9.0.24`](https://renovatebot.com/diffs/npm/@graphql-tools%2fmerge/9.0.20/9.0.24)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-tools%2fmerge/9.0.24?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-tools%2fmerge/9.0.24?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-tools%2fmerge/9.0.20/9.0.24?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-tools%2fmerge/9.0.20/9.0.24?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
|
[@graphql-tools/schema](https://redirect.github.com/ardatan/graphql-tools)
([source](https://redirect.github.com/ardatan/graphql-tools/tree/HEAD/packages/schema))
| [`10.0.19` ->
`10.0.23`](https://renovatebot.com/diffs/npm/@graphql-tools%2fschema/10.0.19/10.0.23)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-tools%2fschema/10.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-tools%2fschema/10.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-tools%2fschema/10.0.19/10.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-tools%2fschema/10.0.19/10.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
|
[@graphql-tools/utils](https://redirect.github.com/ardatan/graphql-tools)
([source](https://redirect.github.com/ardatan/graphql-tools/tree/HEAD/packages/utils))
| [`10.8.2` ->
`10.8.6`](https://renovatebot.com/diffs/npm/@graphql-tools%2futils/10.8.2/10.8.6)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-tools%2futils/10.8.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-tools%2futils/10.8.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-tools%2futils/10.8.2/10.8.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-tools%2futils/10.8.2/10.8.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [@nuxt/devtools](https://devtools.nuxt.com)
([source](https://redirect.github.com/nuxt/devtools/tree/HEAD/packages/devtools))
| [`2.1.0` ->
`2.3.0`](https://renovatebot.com/diffs/npm/@nuxt%2fdevtools/2.1.0/2.3.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nuxt%2fdevtools/2.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nuxt%2fdevtools/2.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nuxt%2fdevtools/2.1.0/2.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nuxt%2fdevtools/2.1.0/2.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [@nuxt/eslint](https://redirect.github.com/nuxt/eslint)
([source](https://redirect.github.com/nuxt/eslint/tree/HEAD/packages/module))
| [`1.1.0` ->
`1.2.0`](https://renovatebot.com/diffs/npm/@nuxt%2feslint/1.1.0/1.2.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nuxt%2feslint/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nuxt%2feslint/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nuxt%2feslint/1.1.0/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nuxt%2feslint/1.1.0/1.2.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[@nuxtjs/tailwindcss](https://redirect.github.com/nuxt-modules/tailwindcss)
| [`6.13.1` ->
`6.13.2`](https://renovatebot.com/diffs/npm/@nuxtjs%2ftailwindcss/6.13.1/6.13.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nuxtjs%2ftailwindcss/6.13.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nuxtjs%2ftailwindcss/6.13.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nuxtjs%2ftailwindcss/6.13.1/6.13.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nuxtjs%2ftailwindcss/6.13.1/6.13.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [@reduxjs/toolkit](https://redux-toolkit.js.org)
([source](https://redirect.github.com/reduxjs/redux-toolkit)) | [`2.5.1`
->
`2.6.1`](https://renovatebot.com/diffs/npm/@reduxjs%2ftoolkit/2.5.1/2.6.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@reduxjs%2ftoolkit/2.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@reduxjs%2ftoolkit/2.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@reduxjs%2ftoolkit/2.5.1/2.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@reduxjs%2ftoolkit/2.5.1/2.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
|
[@rollup/plugin-node-resolve](https://redirect.github.com/rollup/plugins/tree/master/packages/node-resolve/#readme)
([source](https://redirect.github.com/rollup/plugins/tree/HEAD/packages/node-resolve))
| [`16.0.0` ->
`16.0.1`](https://renovatebot.com/diffs/npm/@rollup%2fplugin-node-resolve/16.0.0/16.0.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@rollup%2fplugin-node-resolve/16.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@rollup%2fplugin-node-resolve/16.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@rollup%2fplugin-node-resolve/16.0.0/16.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@rollup%2fplugin-node-resolve/16.0.0/16.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [@rollup/rollup-linux-x64-gnu](https://rollupjs.org/)
([source](https://redirect.github.com/rollup/rollup)) | [`4.34.8` ->
`4.36.0`](https://renovatebot.com/diffs/npm/@rollup%2frollup-linux-x64-gnu/4.34.8/4.36.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@rollup%2frollup-linux-x64-gnu/4.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@rollup%2frollup-linux-x64-gnu/4.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@rollup%2frollup-linux-x64-gnu/4.34.8/4.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@rollup%2frollup-linux-x64-gnu/4.34.8/4.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| optionalDependencies | minor |
|
[@storybook/addon-essentials](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/essentials)
([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/essentials))
| [`8.5.8` ->
`8.6.7`](https://renovatebot.com/diffs/npm/@storybook%2faddon-essentials/8.5.8/8.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-essentials/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-essentials/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-essentials/8.5.8/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-essentials/8.5.8/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[@storybook/addon-interactions](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/interactions)
([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions))
| [`8.5.8` ->
`8.6.7`](https://renovatebot.com/diffs/npm/@storybook%2faddon-interactions/8.5.8/8.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-interactions/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-interactions/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-interactions/8.5.8/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-interactions/8.5.8/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[@storybook/addon-links](https://redirect.github.com/storybookjs/storybook/tree/next/code/addons/links)
([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/addons/links))
| [`8.5.8` ->
`8.6.7`](https://renovatebot.com/diffs/npm/@storybook%2faddon-links/8.5.8/8.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-links/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-links/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-links/8.5.8/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-links/8.5.8/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[@storybook/builder-vite](https://redirect.github.com/storybookjs/storybook/tree/next/code/builders/builder-vite/#readme)
([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/builders/builder-vite))
| [`8.5.8` ->
`8.6.7`](https://renovatebot.com/diffs/npm/@storybook%2fbuilder-vite/8.5.8/8.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2fbuilder-vite/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2fbuilder-vite/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2fbuilder-vite/8.5.8/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2fbuilder-vite/8.5.8/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[@storybook/vue3-vite](https://redirect.github.com/storybookjs/storybook/tree/next/code/frameworks/vue3-vite)
([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/frameworks/vue3-vite))
| [`8.5.8` ->
`8.6.7`](https://renovatebot.com/diffs/npm/@storybook%2fvue3-vite/8.5.8/8.6.7)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2fvue3-vite/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2fvue3-vite/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2fvue3-vite/8.5.8/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2fvue3-vite/8.5.8/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [@swc/core](https://swc.rs)
([source](https://redirect.github.com/swc-project/swc)) | [`1.10.18` ->
`1.11.11`](https://renovatebot.com/diffs/npm/@swc%2fcore/1.10.18/1.11.11)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@swc%2fcore/1.11.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@swc%2fcore/1.11.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@swc%2fcore/1.10.18/1.11.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@swc%2fcore/1.10.18/1.11.11?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[@types/dockerode](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/dockerode)
([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/dockerode))
| [`3.3.34` ->
`3.3.35`](https://renovatebot.com/diffs/npm/@types%2fdockerode/3.3.34/3.3.35)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fdockerode/3.3.35?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fdockerode/3.3.35?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fdockerode/3.3.34/3.3.35?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fdockerode/3.3.34/3.3.35?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
|
[@types/lodash](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/lodash)
([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash))
| [`4.17.15` ->
`4.17.16`](https://renovatebot.com/diffs/npm/@types%2flodash/4.17.15/4.17.16)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2flodash/4.17.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2flodash/4.17.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2flodash/4.17.15/4.17.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2flodash/4.17.15/4.17.16?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
|
[@types/node](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node)
([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node))
| [`22.13.4` ->
`22.13.10`](https://renovatebot.com/diffs/npm/@types%2fnode/22.13.4/22.13.10)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/22.13.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/22.13.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/22.13.4/22.13.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/22.13.4/22.13.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
|
[@types/ws](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/ws)
([source](https://redirect.github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ws))
| [`8.5.14` ->
`8.18.0`](https://renovatebot.com/diffs/npm/@types%2fws/8.5.14/8.18.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fws/8.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fws/8.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fws/8.5.14/8.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fws/8.5.14/8.18.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[@vitejs/plugin-vue](https://redirect.github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#readme)
([source](https://redirect.github.com/vitejs/vite-plugin-vue/tree/HEAD/packages/plugin-vue))
| [`5.2.1` ->
`5.2.3`](https://renovatebot.com/diffs/npm/@vitejs%2fplugin-vue/5.2.1/5.2.3)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vitejs%2fplugin-vue/5.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitejs%2fplugin-vue/5.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitejs%2fplugin-vue/5.2.1/5.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitejs%2fplugin-vue/5.2.1/5.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
|
[@vitejs/plugin-vue-jsx](https://redirect.github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue-jsx#readme)
([source](https://redirect.github.com/vitejs/vite-plugin-vue/tree/HEAD/packages/plugin-vue-jsx))
| [`4.1.1` ->
`4.1.2`](https://renovatebot.com/diffs/npm/@vitejs%2fplugin-vue-jsx/4.1.1/4.1.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vitejs%2fplugin-vue-jsx/4.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitejs%2fplugin-vue-jsx/4.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitejs%2fplugin-vue-jsx/4.1.1/4.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitejs%2fplugin-vue-jsx/4.1.1/4.1.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
|
[@vitest/coverage-v8](https://redirect.github.com/vitest-dev/vitest/tree/main/packages/coverage-v8#readme)
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8))
| [`3.0.6` ->
`3.0.9`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-v8/3.0.6/3.0.9)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fcoverage-v8/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fcoverage-v8/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fcoverage-v8/3.0.6/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fcoverage-v8/3.0.6/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
|
[@vitest/ui](https://redirect.github.com/vitest-dev/vitest/tree/main/packages/ui#readme)
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/ui))
| [`3.0.6` ->
`3.0.9`](https://renovatebot.com/diffs/npm/@vitest%2fui/3.0.6/3.0.9) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fui/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fui/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fui/3.0.6/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fui/3.0.6/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [@vue/apollo-composable](https://apollo.vuejs.org/)
([source](https://redirect.github.com/vuejs/vue-apollo/tree/HEAD/packages/vue-apollo-composable))
| [`4.2.1` ->
`4.2.2`](https://renovatebot.com/diffs/npm/@vue%2fapollo-composable/4.2.1/4.2.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vue%2fapollo-composable/4.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vue%2fapollo-composable/4.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vue%2fapollo-composable/4.2.1/4.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vue%2fapollo-composable/4.2.1/4.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [@vue/apollo-util](https://apollo.vuejs.org/)
([source](https://redirect.github.com/vuejs/vue-apollo/tree/HEAD/packages/vue-apollo-util))
| [`4.0.0-beta.6` ->
`4.2.2`](https://renovatebot.com/diffs/npm/@vue%2fapollo-util/4.0.0-beta.6/4.2.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vue%2fapollo-util/4.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vue%2fapollo-util/4.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vue%2fapollo-util/4.0.0-beta.6/4.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vue%2fapollo-util/4.0.0-beta.6/4.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[@vueuse/components](https://redirect.github.com/vueuse/vueuse/tree/main/packages/components#readme)
([source](https://redirect.github.com/vueuse/vueuse/tree/HEAD/packages/components))
| [`12.7.0` ->
`12.8.2`](https://renovatebot.com/diffs/npm/@vueuse%2fcomponents/12.7.0/12.8.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vueuse%2fcomponents/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vueuse%2fcomponents/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vueuse%2fcomponents/12.7.0/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vueuse%2fcomponents/12.7.0/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [@vueuse/core](https://redirect.github.com/vueuse/vueuse)
([source](https://redirect.github.com/vueuse/vueuse/tree/HEAD/packages/core))
| [`12.7.0` ->
`12.8.2`](https://renovatebot.com/diffs/npm/@vueuse%2fcore/12.7.0/12.8.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vueuse%2fcore/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vueuse%2fcore/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vueuse%2fcore/12.7.0/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vueuse%2fcore/12.7.0/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [@vueuse/core](https://redirect.github.com/vueuse/vueuse)
([source](https://redirect.github.com/vueuse/vueuse/tree/HEAD/packages/core))
| [`12.7.0` ->
`12.8.2`](https://renovatebot.com/diffs/npm/@vueuse%2fcore/12.7.0/12.8.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vueuse%2fcore/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vueuse%2fcore/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vueuse%2fcore/12.7.0/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vueuse%2fcore/12.7.0/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
|
[@vueuse/integrations](https://redirect.github.com/vueuse/vueuse/tree/main/packages/integrations#readme)
([source](https://redirect.github.com/vueuse/vueuse/tree/HEAD/packages/integrations))
| [`12.7.0` ->
`12.8.2`](https://renovatebot.com/diffs/npm/@vueuse%2fintegrations/12.7.0/12.8.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vueuse%2fintegrations/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vueuse%2fintegrations/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vueuse%2fintegrations/12.7.0/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vueuse%2fintegrations/12.7.0/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
|
[@vueuse/nuxt](https://redirect.github.com/vueuse/vueuse/tree/main/packages/nuxt#readme)
([source](https://redirect.github.com/vueuse/vueuse/tree/HEAD/packages/nuxt))
| [`12.7.0` ->
`12.8.2`](https://renovatebot.com/diffs/npm/@vueuse%2fnuxt/12.7.0/12.8.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@vueuse%2fnuxt/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vueuse%2fnuxt/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vueuse%2fnuxt/12.7.0/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vueuse%2fnuxt/12.7.0/12.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [autoprefixer](https://redirect.github.com/postcss/autoprefixer) |
[`10.4.20` ->
`10.4.21`](https://renovatebot.com/diffs/npm/autoprefixer/10.4.20/10.4.21)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/autoprefixer/10.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/autoprefixer/10.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/autoprefixer/10.4.20/10.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/autoprefixer/10.4.20/10.4.21?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [eslint](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint)) | [`9.21.0` ->
`9.22.0`](https://renovatebot.com/diffs/npm/eslint/9.21.0/9.22.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/9.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint/9.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint/9.21.0/9.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/9.21.0/9.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [eslint](https://eslint.org)
([source](https://redirect.github.com/eslint/eslint)) | [`9.20.1` ->
`9.22.0`](https://renovatebot.com/diffs/npm/eslint/9.20.1/9.22.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/9.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint/9.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint/9.20.1/9.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/9.20.1/9.22.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[eslint-config-prettier](https://redirect.github.com/prettier/eslint-config-prettier)
| [`10.0.1` ->
`10.1.1`](https://renovatebot.com/diffs/npm/eslint-config-prettier/10.0.1/10.1.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-config-prettier/10.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-config-prettier/10.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-config-prettier/10.0.1/10.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-config-prettier/10.0.1/10.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[eslint-plugin-n](https://redirect.github.com/eslint-community/eslint-plugin-n)
| [`17.15.1` ->
`17.16.2`](https://renovatebot.com/diffs/npm/eslint-plugin-n/17.15.1/17.16.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-n/17.16.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-n/17.16.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-n/17.15.1/17.16.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-n/17.15.1/17.16.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [eslint-plugin-vue](https://eslint.vuejs.org)
([source](https://redirect.github.com/vuejs/eslint-plugin-vue)) |
[`9.32.0` ->
`9.33.0`](https://renovatebot.com/diffs/npm/eslint-plugin-vue/9.32.0/9.33.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-vue/9.33.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-vue/9.33.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-vue/9.32.0/9.33.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-vue/9.32.0/9.33.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [happy-dom](https://redirect.github.com/capricorn86/happy-dom) |
[`17.1.4` ->
`17.4.4`](https://renovatebot.com/diffs/npm/happy-dom/17.1.4/17.4.4) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/happy-dom/17.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/happy-dom/17.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/happy-dom/17.1.4/17.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/happy-dom/17.1.4/17.4.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [lucide-vue-next](https://lucide.dev)
([source](https://redirect.github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-vue-next))
| [`^0.475.0` ->
`^0.483.0`](https://renovatebot.com/diffs/npm/lucide-vue-next/0.475.0/0.483.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/lucide-vue-next/0.483.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lucide-vue-next/0.483.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lucide-vue-next/0.475.0/0.483.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lucide-vue-next/0.475.0/0.483.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [nest-authz](https://redirect.github.com/node-casbin/nest-authz) |
[`2.14.0` ->
`2.15.0`](https://renovatebot.com/diffs/npm/nest-authz/2.14.0/2.15.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/nest-authz/2.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nest-authz/2.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nest-authz/2.14.0/2.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nest-authz/2.14.0/2.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [nest-commander](https://nest-commander.jaymcdoniel.dev)
([source](https://redirect.github.com/jmcdo29/nest-commander/tree/HEAD/pacakges/nest-commander))
| [`3.16.0` ->
`3.17.0`](https://renovatebot.com/diffs/npm/nest-commander/3.16.0/3.17.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/nest-commander/3.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nest-commander/3.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nest-commander/3.16.0/3.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nest-commander/3.16.0/3.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [nestjs-pino](https://redirect.github.com/iamolegga/nestjs-pino) |
[`4.3.0` ->
`4.3.1`](https://renovatebot.com/diffs/npm/nestjs-pino/4.3.0/4.3.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/nestjs-pino/4.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nestjs-pino/4.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nestjs-pino/4.3.0/4.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nestjs-pino/4.3.0/4.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [nuxt](https://nuxt.com)
([source](https://redirect.github.com/nuxt/nuxt/tree/HEAD/packages/nuxt))
| [`3.15.4` ->
`3.16.0`](https://renovatebot.com/diffs/npm/nuxt/3.15.4/3.16.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/nuxt/3.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nuxt/3.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nuxt/3.15.4/3.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nuxt/3.15.4/3.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [pnpm](https://pnpm.io)
([source](https://redirect.github.com/pnpm/pnpm/tree/HEAD/pnpm)) |
[`10.4.1` ->
`10.6.4`](https://renovatebot.com/diffs/npm/pnpm/10.4.1/10.6.4) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/10.6.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/pnpm/10.6.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/pnpm/10.4.1/10.6.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/10.4.1/10.6.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| packageManager | minor |
| [prettier](https://prettier.io)
([source](https://redirect.github.com/prettier/prettier)) | [`3.5.1` ->
`3.5.3`](https://renovatebot.com/diffs/npm/prettier/3.5.1/3.5.3) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/prettier/3.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/prettier/3.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/prettier/3.5.1/3.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier/3.5.1/3.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [prettier](https://prettier.io)
([source](https://redirect.github.com/prettier/prettier)) | [`3.5.2` ->
`3.5.3`](https://renovatebot.com/diffs/npm/prettier/3.5.2/3.5.3) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/prettier/3.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/prettier/3.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/prettier/3.5.2/3.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prettier/3.5.2/3.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [python](https://redirect.github.com/actions/python-versions) | `3.10`
-> `3.13` |
[![age](https://developer.mend.io/api/mc/badges/age/github-releases/actions%2fpython-versions/3.13.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/github-releases/actions%2fpython-versions/3.13.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/github-releases/actions%2fpython-versions/3.10.16/3.13.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/github-releases/actions%2fpython-versions/3.10.16/3.13.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| uses-with | minor |
| [radix-vue](https://redirect.github.com/unovue/radix-vue) | [`1.9.16`
-> `1.9.17`](https://renovatebot.com/diffs/npm/radix-vue/1.9.16/1.9.17)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/radix-vue/1.9.17?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/radix-vue/1.9.17?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/radix-vue/1.9.16/1.9.17?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/radix-vue/1.9.16/1.9.17?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [reka-ui](https://redirect.github.com/unovue/reka-ui) | [`2.0.2` ->
`2.1.0`](https://renovatebot.com/diffs/npm/reka-ui/2.0.2/2.1.0) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/reka-ui/2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/reka-ui/2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/reka-ui/2.0.2/2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/reka-ui/2.0.2/2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | minor |
| [shadcn-nuxt](https://redirect.github.com/unovue/shadcn-vue)
([source](https://redirect.github.com/unovue/shadcn-vue/tree/HEAD/packages/module))
| [`1.0.1` ->
`1.0.3`](https://renovatebot.com/diffs/npm/shadcn-nuxt/1.0.1/1.0.3) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/shadcn-nuxt/1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/shadcn-nuxt/1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/shadcn-nuxt/1.0.1/1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/shadcn-nuxt/1.0.1/1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
|
[storybook](https://redirect.github.com/storybookjs/storybook/tree/next/code/lib/cli)
([source](https://redirect.github.com/storybookjs/storybook/tree/HEAD/code/lib/cli))
| [`8.5.8` ->
`8.6.7`](https://renovatebot.com/diffs/npm/storybook/8.5.8/8.6.7) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/storybook/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/storybook/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/storybook/8.5.8/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/storybook/8.5.8/8.6.7?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [typescript](https://www.typescriptlang.org/)
([source](https://redirect.github.com/microsoft/TypeScript)) | [`5.7.3`
-> `5.8.2`](https://renovatebot.com/diffs/npm/typescript/5.7.3/5.8.2) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/typescript/5.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typescript/5.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typescript/5.7.3/5.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript/5.7.3/5.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
|
[typescript-eslint](https://typescript-eslint.io/packages/typescript-eslint)
([source](https://redirect.github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint))
| [`8.24.1` ->
`8.26.1`](https://renovatebot.com/diffs/npm/typescript-eslint/8.24.1/8.26.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/typescript-eslint/8.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/typescript-eslint/8.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/typescript-eslint/8.24.1/8.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/typescript-eslint/8.24.1/8.26.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [vite](https://vite.dev)
([source](https://redirect.github.com/vitejs/vite/tree/HEAD/packages/vite))
| [`6.1.1` ->
`6.2.2`](https://renovatebot.com/diffs/npm/vite/6.1.1/6.2.2) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vite/6.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/6.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/6.1.1/6.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/6.1.1/6.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | minor |
| [vitest](https://redirect.github.com/vitest-dev/vitest)
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest))
| [`3.0.6` ->
`3.0.9`](https://renovatebot.com/diffs/npm/vitest/3.0.6/3.0.9) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/3.0.6/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/3.0.6/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [vitest](https://redirect.github.com/vitest-dev/vitest)
([source](https://redirect.github.com/vitest-dev/vitest/tree/HEAD/packages/vitest))
| [`3.0.7` ->
`3.0.9`](https://renovatebot.com/diffs/npm/vitest/3.0.7/3.0.9) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/3.0.7/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/3.0.7/3.0.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
|
[vue-i18n](https://redirect.github.com/intlify/vue-i18n/tree/master/packages/vue-i18n#readme)
([source](https://redirect.github.com/intlify/vue-i18n/tree/HEAD/packages/vue-i18n))
| [`10.0.5` ->
`10.0.6`](https://renovatebot.com/diffs/npm/vue-i18n/10.0.5/10.0.6) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vue-i18n/10.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue-i18n/10.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue-i18n/10.0.5/10.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue-i18n/10.0.5/10.0.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
| [vue-tsc](https://redirect.github.com/vuejs/language-tools)
([source](https://redirect.github.com/vuejs/language-tools/tree/HEAD/packages/tsc))
| [`2.2.2` ->
`2.2.8`](https://renovatebot.com/diffs/npm/vue-tsc/2.2.2/2.2.8) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vue-tsc/2.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue-tsc/2.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue-tsc/2.2.2/2.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue-tsc/2.2.2/2.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [vuetify](https://vuetifyjs.com)
([source](https://redirect.github.com/vuetifyjs/vuetify/tree/HEAD/packages/vuetify))
| [`3.7.14` ->
`3.7.17`](https://renovatebot.com/diffs/npm/vuetify/3.7.14/3.7.17) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vuetify/3.7.17?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vuetify/3.7.17?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vuetify/3.7.14/3.7.17?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vuetify/3.7.14/3.7.17?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| dependencies | patch |
|
[vuetify-nuxt-module](https://redirect.github.com/vuetifyjs/nuxt-module)
| [`0.18.3` ->
`0.18.4`](https://renovatebot.com/diffs/npm/vuetify-nuxt-module/0.18.3/0.18.4)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/vuetify-nuxt-module/0.18.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vuetify-nuxt-module/0.18.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vuetify-nuxt-module/0.18.3/0.18.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vuetify-nuxt-module/0.18.3/0.18.4?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| devDependencies | patch |
| [zx](https://google.github.io/zx/)
([source](https://redirect.github.com/google/zx)) | [`8.3.2` ->
`8.4.1`](https://renovatebot.com/diffs/npm/zx/8.3.2/8.4.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/zx/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/zx/8.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/zx/8.3.2/8.4.1?slim=true

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-03-18 11:17:21 -04:00
Pujit Mehrotra
7aa55883e2 add nix flake for development (#1233)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Chores**
- Refined repository settings to auto-exclude environment and
build-related files.
- Introduced a new configuration that streamlines local development and
displays key tool versions on setup.
- **Documentation**
- Expanded contribution guidelines with a dedicated developer resources
section linking to guides on development practices and repository
structure.
- Updated workflow instructions to better assist developers in setting
up their environment, especially for those using Nix.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-18 11:15:57 -04:00
github-actions[bot]
8cd7376db0 chore(main): release 4.2.0 (#1189)
🤖 I have created a release *beep* *boop*
---


## [4.2.0](https://github.com/unraid/api/compare/v4.1.3...v4.2.0)
(2025-03-18)


### Features

* add resolver for logging
([#1222](https://github.com/unraid/api/issues/1222))
([3f590c5](3f590c56e3))
* connect settings web component
([#1211](https://github.com/unraid/api/issues/1211))
([acbf46d](acbf46df3f))
* improve local dev with install path
([#1221](https://github.com/unraid/api/issues/1221))
([ce61fee](ce61fee41c))
* split plugin builds
([d63e54b](d63e54bdbc))
* swap to absolute paths for css
([#1224](https://github.com/unraid/api/issues/1224))
([dd9983c](dd9983c8b7))
* update theme application logic and color picker
([#1181](https://github.com/unraid/api/issues/1181))
([a030626](a0306269c6))
* use patch version if needed on update check
([#1227](https://github.com/unraid/api/issues/1227))
([12e16a6](12e16a6404))


### Bug Fixes

* add INELIGIBLE state to ConfigErrorState enum
([#1220](https://github.com/unraid/api/issues/1220))
([0f550f9](0f550f9d94))
* **api:** dynamix notifications dir during development
([#1216](https://github.com/unraid/api/issues/1216))
([2700722](270072266a))
* **api:** type imports from generated graphql types
([#1215](https://github.com/unraid/api/issues/1215))
([bce06cd](bce06cd76c))
* **deps:** update dependency @nestjs/schedule to v5
([#1197](https://github.com/unraid/api/issues/1197))
([85c8ef5](85c8ef53ad))
* **deps:** update dependency @vueuse/core to v12
([#1199](https://github.com/unraid/api/issues/1199))
([ff8eba3](ff8eba3df5))
* fix changelog thing again
([a9d5ca8](a9d5ca8899))
* fix invalid path to node with sh execution
([#1213](https://github.com/unraid/api/issues/1213))
([f1838bf](f1838bf69a))
* load tag correctly
([b24a575](b24a575cbb))
* log errors
([365dcae](365dcae04b))
* one-command dev & web env files
([#1214](https://github.com/unraid/api/issues/1214))
([4641894](4641894240))
* re-release fixed
([b491590](b49159022d))
* recreate watcher on path change
([#1203](https://github.com/unraid/api/issues/1203))
([bde37d6](bde37d6751))
* update brand loading variants for consistent sizing
([#1223](https://github.com/unraid/api/issues/1223))
([1b0fbaf](1b0fbaf81a))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-18 11:04:13 -04:00
Pujit Mehrotra
a4f69dc539 restart when developer sandbox is toggled (#1232)
When the sandbox is toggled via api, the api now restarts after a 3 second delay. The Connect settings UI also informs users, when applicable, that the api will restart before and after they apply their settings.

## Summary by CodeRabbit

- **New Features**
- Improved deployment commands now allow specifying a target server,
streamlining the deployment process.
- Enhanced settings synchronization provides clear feedback on when a
system restart is required after updates.
- Automatic service restart is now triggered after applying connection
settings changes.
- User interface enhancements include added contextual descriptions for
toggle controls.
- New functionality to refetch connection settings after updates,
providing users with the latest information.

- **Bug Fixes**
- Improved user feedback regarding API restart status after settings
updates.
2025-03-18 10:33:09 -04:00
Eli Bosley
dd9983c8b7 feat: swap to absolute paths for css (#1224)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Style**
- Updated CSS file paths across multiple components to reference assets
absolutely, ensuring consistent and reliable styling across the user
interface.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-17 16:28:49 -04:00
Eli Bosley
12e16a6404 feat: use patch version if needed on update check (#1227)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Enhanced version management so that update checks now prioritize
combined version details obtained from patch data, ensuring more
consistent and reliable version handling.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-17 14:55:25 -04:00
Pujit Mehrotra
9285eb745e make log viewer vertically resizable (#1231)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- The log viewer now starts at a fixed size and supports vertical
resizing, giving users more control over the viewing area.
- The single log display has been updated to remove height restrictions,
allowing for a more flexible and extended view of log content.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-17 14:48:39 -04:00
Pujit Mehrotra
4969b19a5b fix searchability of extra origins setting (#1230)
Adds a hidden interface element with searchable entities to support legacy search compatibility for unraid connect settings.
2025-03-17 13:37:27 -04:00
Eli Bosley
3f590c56e3 feat: add resolver for logging (#1222)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced a comprehensive Log Viewer accessible from the web
interface and Unraid management, allowing users to easily view, refresh,
and download log files.
- Enabled real-time log updates with auto-scroll functionality for
seamless monitoring.
- Enhanced log display with syntax highlighting and detailed file
metadata for improved readability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-17 11:44:10 -04:00
Pujit Mehrotra
acbf46df3f feat: connect settings web component (#1211)
Replaces the Connect Settings form at Settings > Management Access with a webcomponent containing a generated form.

CodeRabbit:

- **New Features**
- Enhanced connection settings with an updated UI, including a new
custom element `<unraid-connect-settings>`.
- Introduced several new form components (e.g., `NumberField`,
`StringArrayField`, `Select`, `Switch`, `PreconditionsLabel`,
`ControlLayout`, and `VerticalLayout`) for a more dynamic experience.
- Added a notification system with the `Toaster` component for user
feedback.
- New GraphQL operations for managing connection settings and API
updates.
- **Chores**
- Upgraded multiple backend and frontend dependencies and refined
configuration files.
- **Tests**
- Expanded test coverage for CSV conversion, form settings merging, and
the new `csvStringToArray` function.
- **Documentation**
- Added introductory documentation for form components and a readme for
the forms directory.
2025-03-17 10:26:07 -04:00
Eli Bosley
ce61fee41c feat: improve local dev with install path (#1221)
- also add better watcher support

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Added a helper that displays a local installation URL to simplify
setting up the plugin.

- **Chores**
- Updated service and container port configurations to ensure consistent
network connectivity (changed from 8080 to 5858).
- Refined container management to gracefully handle running instances
during startup.
- Improved build and installation routines for streamlined deployment
and enhanced reliability.
- Enhanced documentation to clarify installation and usage instructions
for better user experience.
- Introduced a new document outlining development workflows for better
guidance.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---
- To see the specific tasks where the Asana app for GitHub is being
used, see below:
  - https://app.asana.com/0/0/1209561202532053
2025-03-17 09:44:10 -04:00
Zack Spear
1b0fbaf81a fix: update brand loading variants for consistent sizing (#1223)
I was seeing strange behavior on /Tools/Registration when forcing the
check that happens on page load to fire again. The brand logo SVG was
rendering very large. So I set the size to small. But the SVG was still
rendering strangely due to the square width and height classes.

In the SVG source code, I took `viewBox="0 0 133.52 76.97"` and
converted that to an aspect ratio, `133.52/76.97`. And for simpler
integers - `133.52/76.97 ≈ 1.735` which is close to `7/4 (1.75)`. So we
can use - `aspect-[7/4]`.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Style**
- Enhanced the brand loading component’s appearance by enforcing a
consistent aspect ratio and streamlining its dimension settings to focus
solely on width parameters.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-14 10:05:32 -04:00
Zack Spear
0f550f9d94 fix: add INELIGIBLE state to ConfigErrorState enum (#1220) 2025-03-13 20:19:13 -04:00
Michael Datelle
3ea3953f4c chore: remove cors and implement helmet (#1219)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Enhanced API security by incorporating advanced HTTP header
protection.
- Streamlined CORS configuration to allow broader client compatibility
with defined methods and headers.
- Improved cookie handling in API requests for more robust and reliable
processing.

- **Bug Fixes**
- Resolved potential issues related to cookie validation during
cross-origin requests.

- **Type Safety Improvements**
- Enhanced type definitions for cookie handling methods to ensure
clarity and prevent errors related to undefined values.
- Introduced a mock request object for improved testing of cookie
validation scenarios.
- Updated request handling to enforce the presence of cookies and
headers in API requests.
- Updated import paths for core Fastify types to reflect new
organizational structure.
  
- **Security Changes**
- Removed authentication and rate limiting features from the API key
resolver methods.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: mdatelle <mike@datelle.net>
2025-03-11 12:56:50 -04:00
Eli Bosley
c8d20eb01c chore: use the webguiGlobals to set the var state 2025-03-06 17:05:51 -05:00
Eli Bosley
d467f13a5d chore: hide notification bell when connect is not installed 2025-03-05 14:14:35 -05:00
Eli Bosley
f1838bf69a fix: fix invalid path to node with sh execution (#1213)
Hoping this will resolve:
https://forums.unraid.net/topic/187498-unable-to-install-my-server-plugin/


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Improved command-line execution behavior for enhanced compatibility
across different environments.
- Enhanced the version retrieval process by allowing the system to
locate configuration details from multiple potential sources.
- Introduced a build enhancement that conditionally injects a startup
script into bundled outputs, improving script portability and user
experience.
- Specified the Node.js interpreter path in the application
configuration for better execution control.
- Added a symbolic link for the Node.js binary to enhance accessibility.

- **Bug Fixes**
- Enhanced error handling for locating the `package.json` file,
providing feedback when no valid file is found.

- **Chores**
- Removed unnecessary shell script that modified the system's `PATH`
environment variable.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-03-04 16:13:47 -05:00
Eli Bosley
dbcedad039 chore: revert fastify change 2025-03-04 16:07:33 -05:00
Eli Bosley
c20c7750a4 chore: fastify cookie type issue 2025-03-04 16:05:22 -05:00
Eli Bosley
a09bc85edd chore: delete package lock 2025-03-04 15:32:25 -05:00
Eli Bosley
f2d7abedf4 chore: cleanup deployment by using built in s3 cli (#1212) 2025-03-04 15:30:13 -05:00
renovate[bot]
74408c73bb chore(deps): update dependency @types/node to v22 (#1163) 2025-03-04 15:27:15 -05:00
Eli Bosley
d63e54bdbc feat: split plugin builds
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced containerized plugin deployment support with updated Docker
Compose configurations.
- Added continuous build watch modes for API, web, and UI components for
smoother development iterations.
  - Added a new job for API testing in the CI/CD workflow.
- Added a new shell script to determine the local host's IP address for
Docker configurations.
- Introduced a new entry point and HTTP server setup in the plugin's
Docker environment.
- Added new scripts for building and watching plugin changes in
real-time.
- Added a new script for building the project in watch mode for the API
and UI components.

- **Improvements**
- Streamlined the plugin installation process and refined release
workflows for a more reliable user experience.
- Enhanced overall CI/CD pipelines to ensure efficient, production-ready
deployments.
- Updated artifact upload paths and job definitions for clarity and
efficiency.
- Implemented new utility functions for better URL management and
changelog generation.
- Modified the `.dockerignore` file to ignore all contents within the
`node_modules` directory.
- Added new constants and functions for managing plugin paths and
configurations.
- Updated the build process in the Dockerfile to focus on release
operations.

- **Tests**
- Expanded automated testing to validate environment setups and build
stability, ensuring higher reliability during updates.
- Introduced new test suites for validating plugin environment setups
and configurations.
- Added tests for validating environment variables and handling of
manifest files.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Datelle <mdatelle@icloud.com>
Co-authored-by: mdatelle <mike@datelle.net>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: Pujit Mehrotra <pujit@lime-technology.com>
2025-03-04 15:18:04 -05:00
Pujit Mehrotra
270072266a fix(api): dynamix notifications dir during development (#1216)
In the `[notify]` section of the ./dev/dynamix config, updated the path from "/app/dev/notifications" to "./dev/notifications" to fix notification crud in local, non-docker development.
2025-03-03 15:03:14 -05:00
Pujit Mehrotra
bce06cd76c fix(api): type imports from generated graphql types (#1215)
## Summary by CodeRabbit

- Enhanced internal type handling by updating import statements to use
type-only syntax, ensuring clearer and more consistent type-checking
across modules.
- No changes to application behavior or user-facing functionality have
been introduced.
2025-03-03 14:54:01 -05:00
Pujit Mehrotra
4641894240 fix: one-command dev & web env files (#1214)
- fixes `pnpm dev`
- fixes `just setup`
- Prevents env pollution in nuxt dev/build
2025-03-03 13:14:08 -05:00
renovate[bot]
ff8eba3df5 fix(deps): update dependency @vueuse/core to v12 (#1199) 2025-02-26 14:16:31 -05:00
renovate[bot]
2cc8c9f675 chore(deps): update dependency eslint-plugin-n to v17 (#1206) 2025-02-26 14:16:13 -05:00
Eli Bosley
bde37d6751 fix: recreate watcher on path change (#1203)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Bug Fixes**
- Improved the notifications system by refreshing the monitoring process
only when configuration changes occur, leading to a more reliable
experience.

- **Chores**
- Updated internal synchronization timestamps in multiple files to
ensure consistency and accurate tracking of recent events.
- Removed logging functionality for notifications state to streamline
the logging process.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-26 14:04:24 -05:00
renovate[bot]
7044713508 chore(deps): replace dependency eslint-plugin-node with eslint-plugin-n ^14.0.0 (#1205)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-26 11:55:59 -05:00
Eli Bosley
a2ba518bae chore: remove catch-exit dependency (#1204) 2025-02-26 11:55:21 -05:00
renovate[bot]
a9469127cc chore(deps): update vitest monorepo to v3 (major) (#1195)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-26 11:53:37 -05:00
renovate[bot]
85c8ef53ad fix(deps): update dependency @nestjs/schedule to v5 (#1197)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-26 11:53:16 -05:00
Eli Bosley
ae47866724 chore: pure ESM (#1202) 2025-02-25 14:14:14 -05:00
Eli Bosley
d59ca415af chore: cleanup packages (#1198)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Updated configuration versions and connection status settings for
improved consistency.
- Restructured build and tooling processes with refined script
organization, including new commands for type checking and cleanup.
- Updated dependency management to support enhanced styling and state
management.
- Removed legacy scripts related to environment handling and CSS
utilities.

- **Refactor**
- Streamlined module imports to align with an updated theme management
structure.

- **Bug Fixes**
- Enhanced error handling in various components to provide more
informative error messages during operations.
	- Improved error reporting in the update cancellation process.
	- Improved error reporting in date difference calculations.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-25 13:09:02 -05:00
Eli Bosley
90e4913ef7 chore: add a single changelog for releases (#1191)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Documentation**
	- Streamlined the release notes presentation for improved clarity.
- Consolidated historical release records and now highlights the latest
enhancements and fixes in version 4.1.3.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-24 14:19:36 -05:00
renovate[bot]
b4aafbbe48 chore(deps): update dependency @nuxt/devtools to v2 (#1159)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nuxt/devtools](https://devtools.nuxt.com)
([source](https://redirect.github.com/nuxt/devtools/tree/HEAD/packages/devtools))
| [`^1.6.4` ->
`^2.0.0`](https://renovatebot.com/diffs/npm/@nuxt%2fdevtools/1.7.0/2.1.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nuxt%2fdevtools/2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nuxt%2fdevtools/2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nuxt%2fdevtools/1.7.0/2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nuxt%2fdevtools/1.7.0/2.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>nuxt/devtools (@&#8203;nuxt/devtools)</summary>

###
[`v2.1.0`](https://redirect.github.com/nuxt/devtools/blob/HEAD/CHANGELOG.md#210-2025-02-16)

[Compare
Source](https://redirect.github.com/nuxt/devtools/compare/v2.0.0...v2.1.0)

##### Bug Fixes

- hide inspector button when not available
([684897f](684897f306))

##### Features

- allow override component inspector with `__NUXT_INSPECTOR__`
([9f3c8bf](9f3c8bf147))
- filter out installed modules in search result, closes
[#&#8203;780](https://redirect.github.com/nuxt/devtools/issues/780)
([#&#8203;786](https://redirect.github.com/nuxt/devtools/issues/786))
([fc8ced3](fc8ced33f4))
- option to disable `vueDevTools`
([3e5251c](3e5251cb1b))

###
[`v2.0.0`](https://redirect.github.com/nuxt/devtools/blob/HEAD/CHANGELOG.md#200-2025-02-06)

[Compare
Source](https://redirect.github.com/nuxt/devtools/compare/v1.7.0...v2.0.0)

##### Features

- add directives page
([#&#8203;740](https://redirect.github.com/nuxt/devtools/issues/740))
([c20c724](c20c724db0))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-24 14:17:04 -05:00
renovate[bot]
d890fae296 chore(deps): update dependency rollup-plugin-node-externals to v8 (#1166)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[rollup-plugin-node-externals](https://redirect.github.com/Septh/rollup-plugin-node-externals)
| [`^7.1.3` ->
`^8.0.0`](https://renovatebot.com/diffs/npm/rollup-plugin-node-externals/7.1.3/8.0.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/rollup-plugin-node-externals/8.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/rollup-plugin-node-externals/8.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/rollup-plugin-node-externals/7.1.3/8.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/rollup-plugin-node-externals/7.1.3/8.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>Septh/rollup-plugin-node-externals
(rollup-plugin-node-externals)</summary>

###
[`v8.0.0`](https://redirect.github.com/Septh/rollup-plugin-node-externals/releases/tag/v8.0.0)

[Compare
Source](https://redirect.github.com/Septh/rollup-plugin-node-externals/compare/v7.1.3...v8.0.0)

- Update devDependencies
[`cc6316b`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/cc6316b)
- Update README.md for v8
[`47728ca`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/47728ca)
- Cosmetic edits
[`607ed68`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/607ed68)
- Remove support for Rollup 3
[`fb47ce0`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/fb47ce0)
- Merge branch 'main' of
https://github.com/Septh/rollup-plugin-node-externals
[`30945fe`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/30945fe)
- Merge branch 'pr/segevfiner/33'
[`39986b1`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/39986b1)
- Add badges to README.md
[`1de5c7a`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/1de5c7a)
- Cosmetic edits
[`7c219c2`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/7c219c2)
- Merge pull request
[#&#8203;33](https://redirect.github.com/Septh/rollup-plugin-node-externals/issues/33)
from segevfiner/remove-order-pre
[`9ba4732`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/9ba4732)
- Remove order: 'pre' from resolveId
[`be98d35`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/be98d35)
- Add badges to README.md
[`e3a4ad0`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/e3a4ad0)
- Add LICENSE
[`72e6108`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/72e6108)
- Cleanup VS Code settings
[`e56d3be`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/e56d3be)
- Simplify package.json hunting
[`d24d066`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/d24d066)
- Remove useless await and imports
[`0ecd976`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/0ecd976)
- Remove spurious dep 'globals'
[`e1dd916`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/e1dd916)
- Enforce
[@&#8203;septh/ts-run](https://redirect.github.com/septh/ts-run) 1.2.6+
[`131a2ad`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/131a2ad)
- Tweak tsconfig
[`18d430e`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/18d430e)
- Use cmd.exe to run the build task in VS Code for Windows
[`3595b31`](https://redirect.github.com/Septh/rollup-plugin-node-externals/commit/3595b31)

***

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-24 14:10:56 -05:00
renovate[bot]
9a9ef54d2d chore(deps): update dependency happy-dom to v17 (#1165)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [happy-dom](https://redirect.github.com/capricorn86/happy-dom) |
[`^12.0.0` ->
`^17.0.0`](https://renovatebot.com/diffs/npm/happy-dom/12.10.3/17.1.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/happy-dom/17.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/happy-dom/17.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/happy-dom/12.10.3/17.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/happy-dom/12.10.3/17.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>capricorn86/happy-dom (happy-dom)</summary>

###
[`v17.1.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.1.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v17.1.0...v17.1.1)

##### 🎨 Features

- Adds support for the `@media` selector "forced-colors" - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1727](https://redirect.github.com/capricorn86/happy-dom/issues/1727)
- Read more about how to set the value in the [Wiki for
IBrowserSettings](https://redirect.github.com/capricorn86/happy-dom/wiki/IBrowserSettings)
under "device.forcedColors"

##### 👷‍♂️ Patch fixes

- Fixes issue where it was not possible to nest `@media`, `@supports`
and `@container` rules - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1727](https://redirect.github.com/capricorn86/happy-dom/issues/1727)
- Fixes issue where `CSSStyleSheet` was instantiated internally without
a Window context, causing errors to not be thrown correctly in
`CSSStyleSheet` methods - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1727](https://redirect.github.com/capricorn86/happy-dom/issues/1727)
- Changes errors thrown in `CSSStyleSheet` methods, so that they work
according to spec - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1727](https://redirect.github.com/capricorn86/happy-dom/issues/1727)

###
[`v17.1.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.1.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v17.0.4...v17.1.0)

##### 🎨 Features

- Add support for CSS media query rule "prefers-reduced-motion" - By
**[@&#8203;mwdiaz](https://redirect.github.com/mwdiaz)** in task
[#&#8203;1724](https://redirect.github.com/capricorn86/happy-dom/issues/1724)
- Read more about how to set this value under
[IBrowserSettings](https://redirect.github.com/capricorn86/happy-dom/wiki/IBrowserSettings)
in the Wiki.

###
[`v17.0.4`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.0.4)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v17.0.3...v17.0.4)

##### 👷‍♂️ Patch fixes

- The "slotchange" event should be fired after the element has been
connected to the DOM - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1722](https://redirect.github.com/capricorn86/happy-dom/issues/1722)

###
[`v17.0.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.0.3)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v17.0.2...v17.0.3)

##### 👷‍♂️ Patch fixes

- Fix bug where nested query selector is not returning the correct
result when there are multiple matching selectorGroups - By
\*\*[@&#8203;christiango](https://redirect.github.com/christiango) \*\*
in task
[#&#8203;1720](https://redirect.github.com/capricorn86/happy-dom/issues/1720)

###
[`v17.0.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.0.2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v17.0.1...v17.0.2)

##### 👷‍♂️ Patch fixes

- The property "tabIndex" should return "0" by default in
`HTMLAnchorElement`, `HTMLAreaElement`, `HTMLButtonElement`,
`HTMLIFrameElement`, `HTMLInputElement`, `HTMLMediaElement`,
`HTMLObjectElement`, `HTMLSelectElement` and `HTMLTextAreaElement` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1714](https://redirect.github.com/capricorn86/happy-dom/issues/1714)

###
[`v17.0.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.0.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v17.0.0...v17.0.1)

##### 👷‍♂️ Patch fixes

- Ensure `querySelector()` returns the first item that appears in the
DOM for grouped selectors - By
**[@&#8203;christiango](https://redirect.github.com/christiango)** in
task
[#&#8203;1710](https://redirect.github.com/capricorn86/happy-dom/issues/1710)

###
[`v17.0.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v17.0.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.8.1...v17.0.0)

##### 💣 Breaking Changes

- Adds support for ECMAScript modules - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- This change allows the use of `import` and `export` statements in
JavaScript files

##### 🎨 Features

- Adds support for tracing never ending tasks when using
`waitUntilComplete()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1567](https://redirect.github.com/capricorn86/happy-dom/issues/1567)
- Read more about how to enable this feature under
`debug.traceWaitUntilComplete` in the Wiki for
[IBrowserSettings](https://redirect.github.com/capricorn86/happy-dom/wiki/IBrowserSettings)
- Adds support for preloading fetch, stylesheet, script and modules in
`HTMLLinkElement` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Adds support for `HTMLLinkElement.relList.supports()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Adds support for `Request.mode` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Output failed requests to the console - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Adds support for `HTMLScriptElement.blocking`,
`HTMLScriptElement.crossOrigin`, `HTMLScriptElement.fetchPriority`,
`HTMLScriptElement.noModule`, `HTMLScriptElement.integrity`,
`HTMLScriptElement.referrerPolicy` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Use cache in virtual server requests - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Adds support for `credentials` and `referrerPolicy` when fetching
styles and scripts - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Disallow invalid attributes from being set in `Element.setAttribute()`
- By **[@&#8203;OlaviSau](https://redirect.github.com/OlaviSau)** in
task
[#&#8203;1706](https://redirect.github.com/capricorn86/happy-dom/issues/1706)

##### 👷‍♂️ Patch fixes

- Call `afterAsyncResponse` fetch interceptor in virtual server requests
- By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)**
in task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)
- Fixes bug where children in a `ShadowRoot` of a custom element that
was upgraded from a `HTMLElement` wasn't considered connected to the DOM
- By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)**
in task
[#&#8203;320](https://redirect.github.com/capricorn86/happy-dom/issues/320)

###
[`v16.8.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.8.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.8.0...v16.8.1)

##### 👷‍♂️ Patch fixes

- Handle non-string values gracefully when removing an attribute - By
**[@&#8203;OlaviSau](https://redirect.github.com/OlaviSau)** in task
[#&#8203;1706](https://redirect.github.com/capricorn86/happy-dom/issues/1706)

###
[`v16.8.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.8.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.7.3...v16.8.0)

##### 🎨 Features

- Add support for `insertRow()` and `deleteRow()` to
`HTMLTableSectionElement` - By
**[@&#8203;christiango](https://redirect.github.com/christiango)** in
task
[#&#8203;1708](https://redirect.github.com/capricorn86/happy-dom/issues/1708)

###
[`v16.7.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.7.3)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.7.2...v16.7.3)

##### 👷‍♂️ Patch fixes

- Removes space from directory name that prevents the repo to be cloned
on MS Windows - By
**[@&#8203;kleinfreund](https://redirect.github.com/kleinfreund)** in
task
[#&#8203;1703](https://redirect.github.com/capricorn86/happy-dom/issues/1703)

###
[`v16.7.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.7.2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.7.1...v16.7.2)

##### 👷‍♂️ Patch fixes

- Ignore invalid cookies in CookieContainer - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1693](https://redirect.github.com/capricorn86/happy-dom/issues/1693)

###
[`v16.7.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.7.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.7.0...v16.7.1)

##### 👷‍♂️ Patch fixes

- Adds `ICookie`, `IOptionalCookie`, `CookieSameSiteEnum` and
`IVirtualServer` as exports to the index file - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1693](https://redirect.github.com/capricorn86/happy-dom/issues/1693)
- Makes non-mandatory cookie properties optional in
`CookieContainer.addCookies()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1693](https://redirect.github.com/capricorn86/happy-dom/issues/1693)

###
[`v16.7.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.7.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.6.0...v16.7.0)

##### 🎨 Features

- Adds support for simulating local HTTP servers that serves files from
the local file system - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1688](https://redirect.github.com/capricorn86/happy-dom/issues/1688)
- Read more about virtual servers in the
[Wiki](https://redirect.github.com/capricorn86/happy-dom/wiki/IVirtualServer)

###
[`v16.6.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.6.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.5.3...v16.6.0)

##### 🎨 Features

- Adds support for subsequent sibling combinator to `querySelector()`,
`querySelectorAll()` and `matches()` (e.g. ".a ~ .b") - By
**[@&#8203;karpiuMG](https://redirect.github.com/karpiuMG)** in task
[#&#8203;1683](https://redirect.github.com/capricorn86/happy-dom/issues/1683)

###
[`v16.5.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.5.3)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.5.2...v16.5.3)

##### 👷‍♂️ Patch fixes

- Fixes problem with encoding and decoding attribute values in HTML - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1678](https://redirect.github.com/capricorn86/happy-dom/issues/1678)
- Fixes issue where it was not possible to query selector by class when
the attribute value had line breaks in it - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1678](https://redirect.github.com/capricorn86/happy-dom/issues/1678)

###
[`v16.5.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.5.2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.5.1...v16.5.2)

##### 👷‍♂️ Patch fixes

- `Event.target` should be the target element after an event has been
dispatched - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1529](https://redirect.github.com/capricorn86/happy-dom/issues/1529)

###
[`v16.5.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.5.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.5.0...v16.5.1)

##### 👷‍♂️ Patch fixes

- Fixes issue where `Comment`, `Text` and `DocumentFragment` are not
instances of their corresponding property on `Window` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1577](https://redirect.github.com/capricorn86/happy-dom/issues/1577)

###
[`v16.5.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.5.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.4.3...v16.5.0)

##### 🎨 Features

- Adds property `GlobalRegistrator.isRegistered` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1670](https://redirect.github.com/capricorn86/happy-dom/issues/1670)

###
[`v16.4.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.4.3)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.4.2...v16.4.3)

##### 👷‍♂️ Patch fixes

- Adds null check for if browser frame is available in `Response` during
tear down of the `Window` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1669](https://redirect.github.com/capricorn86/happy-dom/issues/1669)

###
[`v16.4.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.4.2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.4.1...v16.4.2)

##### 👷‍♂️ Patch fixes

- Support using URL as an object for URL:s when using the Browser API -
By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1664](https://redirect.github.com/capricorn86/happy-dom/issues/1664)

###
[`v16.4.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.4.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.4.0...v16.4.1)

##### 👷‍♂️ Patch fixes

- Fixes issue where HTML assigned to
`document.documentElement.innerHTML` isnt parsed correctly since v16 -
By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1663](https://redirect.github.com/capricorn86/happy-dom/issues/1663)

###
[`v16.4.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.4.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.3.0...v16.4.0)

##### 🎨 Features

- Allow fetch to be intercepted and modified by sending in an
interceptor as a setting - By
**[@&#8203;OlaviSau](https://redirect.github.com/OlaviSau)** in task
[#&#8203;1502](https://redirect.github.com/capricorn86/happy-dom/issues/1502)
- Read more about this in the Wiki at
[IFetchInterceptor](https://redirect.github.com/capricorn86/happy-dom/wiki/IFetchInterceptor)

###
[`v16.3.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.3.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.9...v16.3.0)

##### 🎨 Features

- Adds support for child combinator to ":has()" pseudo selector (e.g.
"span:has(> video)") - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1642](https://redirect.github.com/capricorn86/happy-dom/issues/1642)

###
[`v16.2.9`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.9)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.8...v16.2.9)

##### 👷‍♂️ Patch fixes

- Fixes the `HTMLInputElement.defaultChecked` property - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1587](https://redirect.github.com/capricorn86/happy-dom/issues/1587)
- This issue caused React not to serialize the "checked" attribute
correctly

###
[`v16.2.8`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.8)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.7...v16.2.8)

##### 👷‍♂️ Patch fixes

- Fixes issue where the wrong event target was used when dispatching
events on `HTMLFormElement` or `HTMLSelectElement` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1628](https://redirect.github.com/capricorn86/happy-dom/issues/1628)

###
[`v16.2.7`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.7)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.6...v16.2.7)

##### 👷‍♂️ Patch fixes

- Fixes issue where text in `<script>` and `<style>` elements should not
be decoded or encoded - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1564](https://redirect.github.com/capricorn86/happy-dom/issues/1564)

###
[`v16.2.6`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.6)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.5...v16.2.6)

##### 👷‍♂️ Patch fixes

- Fixes problem where snapshots did not result in HTML for `<form>` and
`<select>` elements - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1608](https://redirect.github.com/capricorn86/happy-dom/issues/1608)

###
[`v16.2.5`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.5)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.4...v16.2.5)

##### 👷‍♂️ Patch fixes

- Fixes bug where the reference to a parent `HTMLFormElement` and
`HTMLSelectElement` was wrong which affected the methods `remove()`,
`replaceWith()`, `before()`, `after()`, `append()`, `prepend()`,
`replaceChildren()` and `insertAdjacentElement()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1637](https://redirect.github.com/capricorn86/happy-dom/issues/1637)

###
[`v16.2.4`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.4)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.3...v16.2.4)

##### 👷‍♂️ Patch fixes

- Fixes bug where the incorrect location is set after a redirect in
`BrowserFrame.goto()` and `DetachedBrowserFrame.goto()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1627](https://redirect.github.com/capricorn86/happy-dom/issues/1627)

###
[`v16.2.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.3)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.2...v16.2.3)

##### 👷‍♂️ Patch fixes

- Fixes the implementation for the `HTMLTableCellElement.headers`
property - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1634](https://redirect.github.com/capricorn86/happy-dom/issues/1634)

###
[`v16.2.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.1...v16.2.2)

##### 👷‍♂️ Patch fixes

- Improves error when a Symbol object is being sent to `querySelector()`
or `querySelectorAll()` as selector - By
**[@&#8203;chocolateboy](https://redirect.github.com/chocolateboy)** in
task
[#&#8203;1640](https://redirect.github.com/capricorn86/happy-dom/issues/1640)

###
[`v16.2.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.2.0...v16.2.1)

##### 👷‍♂️ Patch fixes

- Set request credentials to "same-origin" in `XMLHttpRequest` when
"withCredentials" is false - By
**[@&#8203;saitonakamura](https://redirect.github.com/saitonakamura)**
in task
[#&#8203;1631](https://redirect.github.com/capricorn86/happy-dom/issues/1631)

###
[`v16.2.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.2.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.1.0...v16.2.0)

##### 🎨 Features

- Adds support for `Window.scrollBy()` and `Element.scrollBy()` - By
**[@&#8203;OlaviSau](https://redirect.github.com/OlaviSau)** in task
[#&#8203;1623](https://redirect.github.com/capricorn86/happy-dom/issues/1623)

###
[`v16.1.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.1.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.0.1...v16.1.0)

##### 🎨 Features

- Add support for using whitespace-separated list to
`getElementsByClassName()` - By
**[@&#8203;kylehalleman](https://redirect.github.com/kylehalleman)** in
task
[#&#8203;1551](https://redirect.github.com/capricorn86/happy-dom/issues/1551)

###
[`v16.0.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.0.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v16.0.0...v16.0.1)

##### 👷‍♂️ Patch fixes

- Fixes problem with children of created documents (e.g.
`document.implementation.createHTMLDocument()`) not being considered as
connected to a DOM that was introduced in v16 - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1647](https://redirect.github.com/capricorn86/happy-dom/issues/1647)

###
[`v16.0.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v16.0.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.7...v16.0.0)

##### 💣 Breaking Changes

- Refactors XML and HTML parsing and serialization - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1615](https://redirect.github.com/capricorn86/happy-dom/issues/1615)
- This change may break your tests as the serialized output may differ
from v15

##### 🎨 Features

- Adds support for parsing XML in `DOMParser` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;284](https://redirect.github.com/capricorn86/happy-dom/issues/284)
- Improved performance in `document.write()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1615](https://redirect.github.com/capricorn86/happy-dom/issues/1615)
    -   Elements are now added directly to the document during parsing

##### 👷‍♂️ Patch fixes

- Fix for handling `<html>`, `<head>` and `<body>` during parsing - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1615](https://redirect.github.com/capricorn86/happy-dom/issues/1615)
- Fix for handling HTML entities correctly when parsing and serializing
- By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)**
in task
[#&#8203;1494](https://redirect.github.com/capricorn86/happy-dom/issues/1494)
and
[#&#8203;1498](https://redirect.github.com/capricorn86/happy-dom/issues/1498)
- Fix for handling attribute names containing "\[" or "]" during parsing
- By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)**
in task
[#&#8203;1638](https://redirect.github.com/capricorn86/happy-dom/issues/1638)
- Fix for handling comments containing HTML tags - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1630](https://redirect.github.com/capricorn86/happy-dom/issues/1630)
- Fix for handling namespaces in `XMLSerializer` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1615](https://redirect.github.com/capricorn86/happy-dom/issues/1615)
- Handles rules for parsing table elements - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1126](https://redirect.github.com/capricorn86/happy-dom/issues/1126)
- Loads scripts asynchronously when "defer" is set or "type" is "module"
- By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)**
in task
[#&#8203;1615](https://redirect.github.com/capricorn86/happy-dom/issues/1615)

###
[`v15.11.7`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.7)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.6...v15.11.7)

##### 👷‍♂️ Patch fixes

- Allow for an URL to be a string or an URL object in
`History.pushState()` and `History.replaceState()` - By
**[@&#8203;sohailalam2](https://redirect.github.com/sohailalam2)** in
task
[#&#8203;1621](https://redirect.github.com/capricorn86/happy-dom/issues/1621)

###
[`v15.11.6`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.6)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.5...v15.11.6)

##### 👷‍♂️ Patch fixes

- Adds support for `window.TextEncoder` and `window.TextDecoder` - By
**[@&#8203;iradonov](https://redirect.github.com/iradonov)** in task
[#&#8203;1611](https://redirect.github.com/capricorn86/happy-dom/issues/1611)

###
[`v15.11.5`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.5)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.4...v15.11.5)

##### 👷‍♂️ Patch fixes

- `HTMLSelectElement` should not dispatch "change" event when changing
value or index - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1603](https://redirect.github.com/capricorn86/happy-dom/issues/1603)

###
[`v15.11.4`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.4)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.3...v15.11.4)

##### 👷‍♂️ Patch fixes

- Strings should be converted into numbers in setters for
`HTMLMeterElement` and `HTMLProgressElement` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1601](https://redirect.github.com/capricorn86/happy-dom/issues/1601)

###
[`v15.11.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.3)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.2...v15.11.3)

##### 👷‍♂️ Patch fixes

- Consider null as empty string in the setter for
`HTMLInputElement.value` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1604](https://redirect.github.com/capricorn86/happy-dom/issues/1604)

###
[`v15.11.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.1...v15.11.2)

##### 👷‍♂️ Patch fixes

- Fixes bug where pseudo selectors without an ending parentheses threw
an in invalid selector error - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1558](https://redirect.github.com/capricorn86/happy-dom/issues/1558)
- Fixes bug where it was not possible to use the characters ":" and "\\"
in attribute selectors - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1561](https://redirect.github.com/capricorn86/happy-dom/issues/1561)

###
[`v15.11.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.11.0...v15.11.1)

##### 👷‍♂️ Patch fixes

- Fixes bug where `Document.activeElement` is set to the wrong target
when triggering `HTMLSelectElement.focus()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1592](https://redirect.github.com/capricorn86/happy-dom/issues/1592)
- `HTMLSelectElement` is a `Proxy` since v15 and `focus()` was setting
the target of the `Proxy` as the active element, but should set the
`Proxy`

###
[`v15.11.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.11.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.8...v15.11.0)

##### 🎨 Features

- Adds support for the `:disabled` pseudo-class in CSS and query
selectors - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1159](https://redirect.github.com/capricorn86/happy-dom/issues/1159)

###
[`v15.10.8`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.8)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.7...v15.10.8)

##### 👷‍♂️ Patch fixes

- Validate that object is of type `Blob` in
`FileReader.readAsArrayBuffer()`, `FileReader.readAsBinaryString()`,
`FileReader.readAsDataURL()` and `FileReader.readAsText()` - By
**[@&#8203;btea](https://redirect.github.com/btea)** in task
[#&#8203;1565](https://redirect.github.com/capricorn86/happy-dom/issues/1565)

###
[`v15.10.7`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.7)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.6...v15.10.7)

##### 👷‍♂️ Patch fixes

- Cookies with values that contains "=" should be supported - By
**[@&#8203;btea](https://redirect.github.com/btea)** in task
[#&#8203;1570](https://redirect.github.com/capricorn86/happy-dom/issues/1570)

###
[`v15.10.6`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.6)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.5...v15.10.6)

##### 👷‍♂️ Patch fixes

- Accept objects with a stringifier (such as a `URL` object) in
`Location.assign()` and `Location.replace()` - By
**[@&#8203;silverwind](https://redirect.github.com/silverwind)** in task
[#&#8203;1568](https://redirect.github.com/capricorn86/happy-dom/issues/1568)

###
[`v15.10.5`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.5)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.4...v15.10.5)

##### 👷‍♂️ Patch fixes

- Fixes incorrect serialization of special characters in raw text
elements such as `<script>` and `<style>` - By
**[@&#8203;BenjaminAster](https://redirect.github.com/BenjaminAster)**
in task
[#&#8203;1566](https://redirect.github.com/capricorn86/happy-dom/issues/1566)

###
[`v15.10.4`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.4)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.3...v15.10.4)

##### 👷‍♂️ Patch fixes

- Adds missing setter for the `HTMLMediaElement.srcObject` property - By
**[@&#8203;ewesemann](https://redirect.github.com/ewesemann)** in task
[#&#8203;1557](https://redirect.github.com/capricorn86/happy-dom/issues/1557)

###
[`v15.10.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.3)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.2...v15.10.3)

##### 👷‍♂️ Patch fixes

- Allow to set custom export conditions in `@happy-dom/jest-environment`
- By **[@&#8203;aearly](https://redirect.github.com/aearly)** in task
[#&#8203;1555](https://redirect.github.com/capricorn86/happy-dom/issues/1555)

###
[`v15.10.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.1...v15.10.2)

##### 👷‍♂️ Patch fixes

- Fixes a security vulnerability that allowed for server side code to be
executed by a `<script>` tag - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1585](https://redirect.github.com/capricorn86/happy-dom/issues/1585)
    -   There was a case that was missed with the first patch

###
[`v15.10.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.10.0...v15.10.1)

##### 👷‍♂️ Patch fixes

- Fixes a security vulnerability that allowed for server side code to be
executed by a `<script>` tag - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1585](https://redirect.github.com/capricorn86/happy-dom/issues/1585)

###
[`v15.10.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.10.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.9.0...v15.10.0)

##### 🎨 Features

- Adds a new setting called `disableSameOriginPolicy` that makes it
possible to bypass the same-origin policy in fetch requests - By
**[@&#8203;OlaviSau](https://redirect.github.com/OlaviSau)** in task
[#&#8203;1553](https://redirect.github.com/capricorn86/happy-dom/issues/1553)

###
[`v15.9.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.9.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.8.5...v15.9.0)

##### 🎨 Features

- Adds support for "aspect-ratio" to `CSSStyleDeclaration` - By
**[@&#8203;yinm](https://redirect.github.com/yinm)** in task
[#&#8203;1147](https://redirect.github.com/capricorn86/happy-dom/issues/1147)

###
[`v15.8.5`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.8.5)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.8.4...v15.8.5)

##### 👷‍♂️ Patch fixes

- Fixes bug where `Node.getRootNode()` returned null when it was within
a `ShadowRoot` that previously been disconnected from the `Document` -
By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1581](https://redirect.github.com/capricorn86/happy-dom/issues/1581)

###
[`v15.8.4`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.8.4)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.8.3...v15.8.4)

##### 👷‍♂️ Patch fixes

- Fixes bug where child nodes of `HTMLSelectElement` and
`HTMLFormElement` had the wrong reference to the parent - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1578](https://redirect.github.com/capricorn86/happy-dom/issues/1578)

###
[`v15.8.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.8.3)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.8.2...v15.8.3)

##### 👷‍♂️ Patch fixes

- Toggle "open" attribute on `HTMLDetailsElement` when dispatching a
click event on a summary element which is a child of the details element
- By
**[@&#8203;mikedidomizio](https://redirect.github.com/mikedidomizio)**
in task
[#&#8203;1534](https://redirect.github.com/capricorn86/happy-dom/issues/1534)

###
[`v15.8.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.8.2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.8.1...v15.8.2)

##### 👷‍♂️ Patch fixes

- Use `globalThis` instead of `global` to make Happy DOM work in other
runtimes such as Cloudflare workers - By
**[@&#8203;mattallty](https://redirect.github.com/mattallty)** in task
[#&#8203;1546](https://redirect.github.com/capricorn86/happy-dom/issues/1546)

###
[`v15.8.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.8.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.8.0...v15.8.1)

##### 👷‍♂️ Patch fixes

- Always return `Promise<Blob>` from `ClipboardItem.getType()` - By
**[@&#8203;ezzatron](https://redirect.github.com/ezzatron)** in task
[#&#8203;1538](https://redirect.github.com/capricorn86/happy-dom/issues/1538)

###
[`v15.8.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.7.4...33a72ca38277d2aab5341b4b66b0ca6380285c0b)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.7.4...v15.8.0)

###
[`v15.7.4`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.7.4)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.7.3...v15.7.4)

##### 👷‍♂️ Patch fixes

- Fixes incorrect handling of non-node items inserted using
`replaceWith()`, `before()` and `after()` - By
**[@&#8203;BenjaminAster](https://redirect.github.com/BenjaminAster)**
in task
[#&#8203;1533](https://redirect.github.com/capricorn86/happy-dom/issues/1533)

###
[`v15.7.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.7.3)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.7.2...v15.7.3)

##### 👷‍♂️ Patch fixes

- Fixes bug that occurs when checking if a symbol property exists on
`HTMLSelectElement` - By
**[@&#8203;Cherry](https://redirect.github.com/Cherry)** in task
[#&#8203;1526](https://redirect.github.com/capricorn86/happy-dom/issues/1526)

###
[`v15.7.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.7.2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.7.1...v15.7.2)

##### 👷‍♂️ Patch fixes

- Fixes problem where it is not possible to observe again after
disconnecting in `MutationObserver` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1524](https://redirect.github.com/capricorn86/happy-dom/issues/1524)

###
[`v15.7.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.7.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.7.0...v15.7.1)

##### 👷‍♂️ Patch fixes

- Fixes selector validation and converts selectors to string (e.g.
`querySelector(['.class'])`) - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1507](https://redirect.github.com/capricorn86/happy-dom/issues/1507)

###
[`v15.7.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.6.1...9bde659a1f05519c3986ec1a0bba9d12526525f7)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.6.1...v15.7.0)

###
[`v15.6.1`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.6.0...86748dba632a1716247785851c0009d2256f23ef)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.6.0...v15.6.1)

###
[`v15.6.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.5.0...71d243a6a3583cbc376dc90513d5739e96064691)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.5.0...v15.6.0)

###
[`v15.5.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.4.3...fec1c0165753112715e1295cc57bb0c16b679b39)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.4.3...v15.5.0)

###
[`v15.4.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.4.3)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.4.2...v15.4.3)

##### 👷‍♂️ Patch fixes

- Adds support for supporting new lines and tabs as white-space
character in CSS selectors - By
**[@&#8203;syi0808](https://redirect.github.com/syi0808)** in task
[#&#8203;1414](https://redirect.github.com/capricorn86/happy-dom/issues/1414)

###
[`v15.4.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.4.2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.4.1...v15.4.2)

##### 👷‍♂️ Patch fixes

- Typo in CORS rejection error message - By
**[@&#8203;rexxars](https://redirect.github.com/rexxars)** in task
[#&#8203;1485](https://redirect.github.com/capricorn86/happy-dom/issues/1485)

###
[`v15.4.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.4.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.4.0...v15.4.1)

##### 👷‍♂️ Patch fixes

- Throw error in `FormData.append()` when value parameter type is
incorrect - By **[@&#8203;btea](https://redirect.github.com/btea)** in
task
[#&#8203;1484](https://redirect.github.com/capricorn86/happy-dom/issues/1484)

###
[`v15.4.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.3.2...5b23cc1cf711b8b3c0132d5f3241de6425bc2dc2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.3.2...v15.4.0)

###
[`v15.3.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.3.2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.3.1...v15.3.2)

##### 👷‍♂️ Patch fixes

- Fixes the `HTMLInputElement.indeterminate`, so that it behaves
correctly - By **[@&#8203;malko](https://redirect.github.com/malko)** in
task
[#&#8203;1439](https://redirect.github.com/capricorn86/happy-dom/issues/1439)

###
[`v15.3.1`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.3.0...530f535c01f72de9190d9e67d0c3540d3c44a5fa)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.3.0...v15.3.1)

###
[`v15.3.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v15.2.0...a99364fa80f968da81dbb6ceb899ae15a8e5b902)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.2.0...v15.3.0)

###
[`v15.2.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.2.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.1.0...v15.2.0)

##### 🎨 Features

- Adds support for the static method `AbortSignal.any()` - By
**[@&#8203;ezzatron](https://redirect.github.com/ezzatron)** in task
[#&#8203;1468](https://redirect.github.com/capricorn86/happy-dom/issues/1468)

###
[`v15.1.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.1.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v15.0.0...v15.1.0)

##### 🎨 Features

- Refactor internal logic related to injecting the Window context for
classes that can be constructed using the "new" operator - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Improves the way classes can access the Browser context internally -
By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Refactor of the logic for `EventTarget.dispatchEvent()` to better
handle the event phases "none", "capture", "atTarget" and "bubbling" -
By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds support for `HTMLInputElement.popoverTargetElement`,
`HTMLInputElement.popoverTargetAction`,
`HTMLButtonElement.popoverTargetElement` and
`HTMLButtonElement.popoverTargetAction` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds support for `HTMLElement.popover` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds support for `PerformanceObserver`, `PerformanceEntry` and
`PerformanceObserverEntryList` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)

##### 👷‍♂️ Patch fixes

- Makes it possible for a polyfill to replace
`NodeList[Symbol.iterator]()` with `Array.prototype.values()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds logic for canceling any request to start new async tasks while
the `Window` is closing (e.g. using `setTimeout()` or `fetch()`) - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Fixes issues with errors exiting the browser when using the setting
"errorCapture" set to "processLevel" - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Refactor internal logic, so that thrown errors are instances of unique
error classes assigned to the `Window`, which makes it possible for
`BrowserExceptionObserver` to know which `Window` the error originated
from
- Changes `Event.composedPath()` to not return the `Window` object if
the event type is "load", which is the same behaviour as the browser -
By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- This means that "load" events will not bubble up to the `Window`
object

###
[`v15.0.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v15.0.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.12.3...v15.0.0)

##### 💣 Breaking Changes

- Drops offical support for Node.js 16.x and 17.x - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- A lot of internal logic has been refactored, so if you rely on
internal APIs, this release may break your code - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)

##### 🎨 Features

- Adds support for `HTMLAreaElement`, `HTMLBodyElement`,
`HTMLQuoteElement`, `HTMLBRElement`, `HTMLTableCaptionElement`,
`HTMLTableColElement`, `HTMLTableColElement`, `HTMLDataElement`,
`HTMLDataListElement`, `HTMLModElement`, `HTMLDetailsElement`,
`HTMLDivElement`, `HTMLDListElement`, `HTMLEmbedElement`,
`HTMLFieldSetElement`, `HTMLHeadingElement`, `HTMLHeadElement`,
`HTMLHRElement`, `HTMLHtmlElement`, `HTMLModElement`,
`HTMLLegendElement`, `HTMLLIElement`, `HTMLMapElement`,
`HTMLMenuElement`, `HTMLMeterElement`, `HTMLObjectElement`,
`HTMLOListElement`, `HTMLOutputElement`, `HTMLParagraphElement`,
`HTMLParamElement`, `HTMLPictureElement`, `HTMLPreElement`,
`HTMLProgressElement`, `HTMLQuoteElement`, `HTMLSourceElement`,
`HTMLSpanElement`, `HTMLTableElement`, `HTMLTableSectionElement`,
`HTMLTableSectionElement`, `HTMLTitleElement`, `HTMLTableRowElement`,
`HTMLTrackElement`, `HTMLUListElement` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds basic support for `HTMLCanvasElement` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds support for History API - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds cache to `CSSStyleDeclaration`, `querySelector()`,
`querySelectorAll()`, `getElementById()`, `getElementsByClassName()`,
`getElementsByTagName()`, `getElementsByTagNameNS()`,
`getElementsByClassName()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Uses proxy for `NodeList`, `HTMLCollection`, `DOMTokenList`,
`TextTrackList`, `HTMLFormElement`, `HTMLSelectElement`
- Makes `HTMLCollection` objects returned by `getElementsByClassName()`,
`getElementsByTagName()`, `getElementsByTagNameNS()` and
`getElementsByClassName()` live - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Improves support for `HTMLMediaElement` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- It now supports all methods and properties of the `HTMLMediaElement`
interface
- Adds support for `MediaStream`, `MediaStreamTrack`, `RemotePlayback`,
`TextTrack`, `TextTrackCue`, `TextTrackCueList`, `TextTrackList`,
`VTTCue`, `VTTRegion`, `CanvasCaptureMediaStream`, `ImageBitmap`,
`OffscreenCanvas` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds basic support for `IntersectionObserver` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Uses Array for nodes and elements in the DOM-tree to leverage the JiT
compiler better - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds support for `HTMLInputElement.list` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Improves support for `ShadowRoot` (it now supports `clonable`,
`serializable` and `slotAssignment`) - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Adds support for `Element.getHTML()` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Improves performance for some pseudo query selectors - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Improves support for `HTMLSlotElement` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- It now supports `assign()`, `assignedNodes()`, `assignedElements()`
and the `slotchange` event

##### 👷‍♂️ Patch fixes

- Attributes and text data wasn't escaped correctly in `XMLSerializer`
(used by features such as `innerHTML`) - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1265](https://redirect.github.com/capricorn86/happy-dom/issues/1265)
- `waitForNavigation()` would not resolve when navigating to some URLs
(e.g. "javascript" or "about:blank") - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- CSS rules for gradients where not parsed correctly - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Updates to CSSStyleDeclaration would not trigger listeners for the
"style" attribute - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Attributes where added to elements after they were added to the DOM
during parsing, causing problems for elements loading resources - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- `Attr.cloneNode()` would not clone internal values - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- `Document.title` included text data inside child elements, which it
shouldn't - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- `Event.preventDefault()` shouldn't cancel the default behaviour if
cancelable is not sent as an option in `EventTarget.dispatchEvent()` -
By **[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Source attributes containing URLs would not be resolved correctly in
some elements - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- Changes name on `TimeRange` to `TimeRanges` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)
- `Window.parent` and `Window.top` would not be set correctly in some
scenarios - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1332](https://redirect.github.com/capricorn86/happy-dom/issues/1332)

###
[`v14.12.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.12.3)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.12.2...v14.12.3)

##### 👷‍♂️ Patch fixes

- Element.insertBefore works when the node is already inserted - In task
[#&#8203;1429](https://redirect.github.com/capricorn86/happy-dom/issues/1429)

###
[`v14.12.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.12.2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.12.1...v14.12.2)

##### 👷‍♂️ Patch fixes

- Fixes problem related to the cookie container using the wrong path
when caching cookies - By
**[@&#8203;matcic](https://redirect.github.com/matcic)** in task
[#&#8203;1455](https://redirect.github.com/capricorn86/happy-dom/issues/1455)

###
[`v14.12.1`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.12.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.12.0...v14.12.1)

##### 👷‍♂️ Patch fixes

- Fixes problem related to React click handler with `preventDefault` not
preventing navigation - By
**[@&#8203;amitdahan](https://redirect.github.com/amitdahan)** in task
[#&#8203;1464](https://redirect.github.com/capricorn86/happy-dom/issues/1464)

###
[`v14.12.0`](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.4...ef2dfeafc7673d53776f8db1a313fecaed5074f4)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.4...v14.12.0)

###
[`v14.11.4`](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.3...v14.11.4)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.3...v14.11.4)

###
[`v14.11.3`](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.2...f021a3305a20d0f0613d50c30ee694be831faa95)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.2...v14.11.3)

###
[`v14.11.2`](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.1...db97904b3a11e575269a15bbb70031399729ff45)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.1...v14.11.2)

###
[`v14.11.1`](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.0...6ada81698021c35f074e575ec232d1bb7bafb4bc)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.11.0...v14.11.1)

###
[`v14.11.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.11.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.10.3...v14.11.0)

##### 🎨 Features

- Adds support for `HTMLTimeElement` - By
**[@&#8203;r-thomson](https://redirect.github.com/r-thomson)** in task
[#&#8203;1431](https://redirect.github.com/capricorn86/happy-dom/issues/1431)

###
[`v14.10.3`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.10.3)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.10.2...v14.10.3)

##### 👷‍♂️ Patch fixes

- Adds check for if Window and MutationObserver has been destroyed when
triggering listeners - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1436](https://redirect.github.com/capricorn86/happy-dom/issues/1436)

###
[`v14.10.2`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.10.2)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.10.1...v14.10.2)

##### 👷‍♂️ Patch fixes

- `HTMLAnchorElement`, `HTMLButtonElement`, `HTMLInputElement` and
`HTMLLabelElement` checked that click events triggering native behavior
was of type `PointerEvent`, but should check that they are of type
`MouseEvent` - By
**[@&#8203;capricorn86](https://redirect.github.com/capricorn86)** in
task
[#&#8203;1397](https://redirect.github.com/capricorn86/happy-dom/issues/1397)

###
[`v14.10.1`](https://redirect.github.com/capricorn86/happy-dom/compare/v14.10.0...v14.10.1)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.10.0...v14.10.1)

###
[`v14.10.0`](https://redirect.github.com/capricorn86/happy-dom/releases/tag/v14.10.0)

[Compare
Source](https://redirect.github.com/capricorn86/happy-dom/compare/v14.9.0...v14.10.0)

##### 🎨 Features

- Adds support for `Document.elementFromPoint()` - By
**[@&#8203;TreyVigus](https://redirect.github.com/TreyVigus)** in task
[#&#8203;1400](https://redirect.github.com/capricorn86/happy-dom/issues/1400)
- The method will always return `null` as Happy DOM doesn't support
rendering and can't calculate an element's position based on where it is
r

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-24 14:09:46 -05:00
renovate[bot]
baa8eb7375 chore(deps): update dependency shadcn-nuxt to v1 (#1193)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [shadcn-nuxt](https://redirect.github.com/unovue/shadcn-vue)
([source](https://redirect.github.com/unovue/shadcn-vue/tree/HEAD/packages/module))
| [`^0.11.3` ->
`^1.0.0`](https://renovatebot.com/diffs/npm/shadcn-nuxt/0.11.3/1.0.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/shadcn-nuxt/1.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/shadcn-nuxt/1.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/shadcn-nuxt/0.11.3/1.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/shadcn-nuxt/0.11.3/1.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>unovue/shadcn-vue (shadcn-nuxt)</summary>

###
[`v1.0.1`](https://redirect.github.com/unovue/shadcn-vue/releases/tag/v1.0.1)

[Compare
Source](https://redirect.github.com/unovue/shadcn-vue/compare/v1.0.0...v1.0.1)

#####    🐞 Bug Fixes

- **CLI**: Init, support js, update docs  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia) in
[https://github.com/unovue/shadcn-vue/issues/1053](https://redirect.github.com/unovue/shadcn-vue/issues/1053)
[<samp>(cdfe2)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/cdfe2e8e)

#####     [View changes on
GitHub](https://redirect.github.com/unovue/shadcn-vue/compare/v1.0.0...v1.0.1)

###
[`v1.0.0`](https://redirect.github.com/unovue/shadcn-vue/releases/tag/v1.0.0)

[Compare
Source](https://redirect.github.com/unovue/shadcn-vue/compare/v0.11.4...v1.0.0)

#####    🚀 Features

- Reka-ui & updated cli  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia) in
[https://github.com/unovue/shadcn-vue/issues/917](https://redirect.github.com/unovue/shadcn-vue/issues/917)
[<samp>(bc6da)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/bc6dae3d)

#####     [View changes on
GitHub](https://redirect.github.com/unovue/shadcn-vue/compare/v0.11.4...v1.0.0)

###
[`v0.11.4`](https://redirect.github.com/unovue/shadcn-vue/releases/tag/v0.11.4)

[Compare
Source](https://redirect.github.com/unovue/shadcn-vue/compare/v0.11.3...v0.11.4)

##### CLI

-   Modified to use updated registry url

   

##### 🐞 Bug Fixes

- Add missing `useMediaQuery` in `SidebarProvider.vue` new-york style
 -  by
[@&#8203;fabianbernhart](https://redirect.github.com/fabianbernhart) in
[https://github.com/unovue/shadcn-vue/issues/927](https://redirect.github.com/unovue/shadcn-vue/issues/927)
[<samp>(8a24d)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/8a24d11a)
- Only apply text-sidebar-foreground to sidebar  -  by
[@&#8203;benkroeger](https://redirect.github.com/benkroeger) in
[https://github.com/unovue/shadcn-vue/issues/986](https://redirect.github.com/unovue/shadcn-vue/issues/986)
[<samp>(1195a)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/1195a830)
- Sidebar not installable in JS projects  -  by
[@&#8203;4m1n0s](https://redirect.github.com/4m1n0s) in
[https://github.com/unovue/shadcn-vue/issues/1026](https://redirect.github.com/unovue/shadcn-vue/issues/1026)
[<samp>(efc4e)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/efc4e9f5)
- Calendar heading slots typing  -  by
[@&#8203;ZTL-UwU](https://redirect.github.com/ZTL-UwU) in
[https://github.com/unovue/shadcn-vue/issues/1038](https://redirect.github.com/unovue/shadcn-vue/issues/1038)
[<samp>(772b8)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/772b8d16)
- **RadioGroupItem**: Add peer class to RadioGroupItem  -  by
[@&#8203;wsehl](https://redirect.github.com/wsehl) in
[https://github.com/unovue/shadcn-vue/issues/1046](https://redirect.github.com/unovue/shadcn-vue/issues/1046)
[<samp>(86702)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/86702dd8)
- **Sidebar**: Component import and registry dependencies  -  by
[@&#8203;zernonia](https://redirect.github.com/zernonia)
[<samp>(693b0)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/693b0d2a)
- **navigation**: Add NavigationMenuIndicator export  -  by
[@&#8203;sanskar-mk2](https://redirect.github.com/sanskar-mk2) in
[https://github.com/unovue/shadcn-vue/issues/1012](https://redirect.github.com/unovue/shadcn-vue/issues/1012)
[<samp>(5572d)</samp>](https://redirect.github.com/unovue/shadcn-vue/commit/5572de2b)

#####     [View changes on
GitHub](https://redirect.github.com/unovue/shadcn-vue/compare/v0.11.3...v0.11.4)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-24 14:09:20 -05:00
renovate[bot]
982b22b1b4 chore(deps): update szenius/set-timezone action to v2 (#1194)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[szenius/set-timezone](https://redirect.github.com/szenius/set-timezone)
| action | major | `v1.2` -> `v2.0` |

---

### Release Notes

<details>
<summary>szenius/set-timezone (szenius/set-timezone)</summary>

###
[`v2.0`](https://redirect.github.com/szenius/set-timezone/releases/tag/v2.0)

[Compare
Source](https://redirect.github.com/szenius/set-timezone/compare/v1.2...v2.0)

##### What's Changed

- update deps & make use of node 20 instead of node 16 by
[@&#8203;kwarkjes](https://redirect.github.com/kwarkjes) in
[https://github.com/szenius/set-timezone/pull/19](https://redirect.github.com/szenius/set-timezone/pull/19)

##### New Contributors

- [@&#8203;kwarkjes](https://redirect.github.com/kwarkjes) made their
first contribution in
[https://github.com/szenius/set-timezone/pull/19](https://redirect.github.com/szenius/set-timezone/pull/19)

**Full Changelog**:
https://github.com/szenius/set-timezone/compare/v1.2...v2.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-24 14:08:44 -05:00
Eli Bosley
d53577cd65 refactor: fix theme settings 2025-02-24 13:42:31 -05:00
renovate[bot]
3bcf7f5c29 chore(deps): update node.js to v22 (major) (#1179)
Updates node.js in plugin / monorepo
2025-02-24 12:18:07 -05:00
renovate[bot]
41252392d3 chore(deps): update dependency vite to v6 (#1171)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [vite](https://vite.dev)
([source](https://redirect.github.com/vitejs/vite/tree/HEAD/packages/vite))
| [`^5.0.0` ->
`^6.0.0`](https://renovatebot.com/diffs/npm/vite/5.4.14/6.1.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vite/6.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/6.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/5.4.14/6.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/5.4.14/6.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vite](https://vite.dev)
([source](https://redirect.github.com/vitejs/vite/tree/HEAD/packages/vite))
| [`^5.4.14` ->
`^6.0.0`](https://renovatebot.com/diffs/npm/vite/5.4.14/6.1.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vite/6.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/6.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/5.4.14/6.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/5.4.14/6.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>vitejs/vite (vite)</summary>

###
[`v6.1.1`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small611-2025-02-19-small)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v6.1.0...v6.1.1)

- fix: ensure `.[cm]?[tj]sx?` static assets are JS mime
([#&#8203;19453](https://redirect.github.com/vitejs/vite/issues/19453))
([e7ba55e](e7ba55e7d5)),
closes
[#&#8203;19453](https://redirect.github.com/vitejs/vite/issues/19453)
- fix: ignore `*.ipv4` address in cert
([#&#8203;19416](https://redirect.github.com/vitejs/vite/issues/19416))
([973283b](973283bf84)),
closes
[#&#8203;19416](https://redirect.github.com/vitejs/vite/issues/19416)
- fix(css): run rewrite plugin if postcss plugin exists
([#&#8203;19371](https://redirect.github.com/vitejs/vite/issues/19371))
([bcdb51a](bcdb51a1ac)),
closes
[#&#8203;19371](https://redirect.github.com/vitejs/vite/issues/19371)
- fix(deps): bump tsconfck
([#&#8203;19375](https://redirect.github.com/vitejs/vite/issues/19375))
([746a583](746a583d42)),
closes
[#&#8203;19375](https://redirect.github.com/vitejs/vite/issues/19375)
- fix(deps): update all non-major dependencies
([#&#8203;19392](https://redirect.github.com/vitejs/vite/issues/19392))
([60456a5](60456a54fe)),
closes
[#&#8203;19392](https://redirect.github.com/vitejs/vite/issues/19392)
- fix(deps): update all non-major dependencies
([#&#8203;19440](https://redirect.github.com/vitejs/vite/issues/19440))
([ccac73d](ccac73d9d0)),
closes
[#&#8203;19440](https://redirect.github.com/vitejs/vite/issues/19440)
- fix(html): ignore malformed src attrs
([#&#8203;19397](https://redirect.github.com/vitejs/vite/issues/19397))
([aff7812](aff7812f0a)),
closes
[#&#8203;19397](https://redirect.github.com/vitejs/vite/issues/19397)
- fix(worker): fix web worker type detection
([#&#8203;19462](https://redirect.github.com/vitejs/vite/issues/19462))
([edc65ea](edc65eafa3)),
closes
[#&#8203;19462](https://redirect.github.com/vitejs/vite/issues/19462)
- refactor: remove custom .jxl mime
([#&#8203;19457](https://redirect.github.com/vitejs/vite/issues/19457))
([0c85464](0c854645bd)),
closes
[#&#8203;19457](https://redirect.github.com/vitejs/vite/issues/19457)
- feat: add support for injecting debug IDs
([#&#8203;18763](https://redirect.github.com/vitejs/vite/issues/18763))
([0ff556a](0ff556a6d9)),
closes
[#&#8203;18763](https://redirect.github.com/vitejs/vite/issues/18763)
- chore: update 6.1.0 changelog
([#&#8203;19363](https://redirect.github.com/vitejs/vite/issues/19363))
([fa7c211](fa7c211bf3)),
closes
[#&#8203;19363](https://redirect.github.com/vitejs/vite/issues/19363)

###
[`v6.1.0`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#610-2025-02-05)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v6.0.11...v6.1.0)

- refactor: deprecate `vite optimize` command
([#&#8203;19348](https://redirect.github.com/vitejs/vite/issues/19348))
([6e0e3c0](6e0e3c0b99)),
closes
[#&#8203;19348](https://redirect.github.com/vitejs/vite/issues/19348)
- feat: show hosts in cert in CLI
([#&#8203;19317](https://redirect.github.com/vitejs/vite/issues/19317))
([a5e306f](a5e306f2fc)),
closes
[#&#8203;19317](https://redirect.github.com/vitejs/vite/issues/19317)
- feat: support for env var for defining allowed hosts
([#&#8203;19325](https://redirect.github.com/vitejs/vite/issues/19325))
([4d88f6c](4d88f6c939)),
closes
[#&#8203;19325](https://redirect.github.com/vitejs/vite/issues/19325)
- feat: use native runtime to import the config
([#&#8203;19178](https://redirect.github.com/vitejs/vite/issues/19178))
([7c2a794](7c2a7942cc)),
closes
[#&#8203;19178](https://redirect.github.com/vitejs/vite/issues/19178)
- fix: avoid builtStart during vite optimize
([#&#8203;19356](https://redirect.github.com/vitejs/vite/issues/19356))
([fdb36e0](fdb36e0769)),
closes
[#&#8203;19356](https://redirect.github.com/vitejs/vite/issues/19356)
- fix(build): fix stale build manifest on watch rebuild
([#&#8203;19361](https://redirect.github.com/vitejs/vite/issues/19361))
([fcd5785](fcd578587b)),
closes
[#&#8203;19361](https://redirect.github.com/vitejs/vite/issues/19361)

###
[`v6.0.11`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small6011-2025-01-21-small)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v6.0.10...v6.0.11)

- fix: `preview.allowedHosts` with specific values was not respected
([#&#8203;19246](https://redirect.github.com/vitejs/vite/issues/19246))
([aeb3ec8](aeb3ec84a2)),
closes
[#&#8203;19246](https://redirect.github.com/vitejs/vite/issues/19246)
- fix: allow CORS from loopback addresses by default
([#&#8203;19249](https://redirect.github.com/vitejs/vite/issues/19249))
([3d03899](3d03899737)),
closes
[#&#8203;19249](https://redirect.github.com/vitejs/vite/issues/19249)

###
[`v6.0.10`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small6010-2025-01-20-small)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v6.0.9...v6.0.10)

- fix: try parse `server.origin` URL
([#&#8203;19241](https://redirect.github.com/vitejs/vite/issues/19241))
([2495022](2495022420)),
closes
[#&#8203;19241](https://redirect.github.com/vitejs/vite/issues/19241)

###
[`v6.0.9`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small609-2025-01-20-small)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v6.0.8...v6.0.9)

- fix!: check host header to prevent DNS rebinding attacks and introduce
`server.allowedHosts`
([bd896fb](bd896fb5f3))
- fix!: default `server.cors: false` to disallow fetching from untrusted
origins
([b09572a](b09572acc9))
- fix: verify token for HMR WebSocket connection
([029dcd6](029dcd6d77))

###
[`v6.0.8`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small608-2025-01-20-small)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v6.0.7...v6.0.8)

- fix: avoid SSR HMR for HTML files
([#&#8203;19193](https://redirect.github.com/vitejs/vite/issues/19193))
([3bd55bc](3bd55bcb7e)),
closes
[#&#8203;19193](https://redirect.github.com/vitejs/vite/issues/19193)
- fix: build time display 7m 60s
([#&#8203;19108](https://redirect.github.com/vitejs/vite/issues/19108))
([cf0d2c8](cf0d2c8e23)),
closes
[#&#8203;19108](https://redirect.github.com/vitejs/vite/issues/19108)
- fix: don't resolve URL starting with double slash
([#&#8203;19059](https://redirect.github.com/vitejs/vite/issues/19059))
([35942cd](35942cde11)),
closes
[#&#8203;19059](https://redirect.github.com/vitejs/vite/issues/19059)
- fix: ensure `server.close()` only called once
([#&#8203;19204](https://redirect.github.com/vitejs/vite/issues/19204))
([db81c2d](db81c2dada)),
closes
[#&#8203;19204](https://redirect.github.com/vitejs/vite/issues/19204)
- fix: resolve.conditions in ResolvedConfig was
`defaultServerConditions`
([#&#8203;19174](https://redirect.github.com/vitejs/vite/issues/19174))
([ad75c56](ad75c56dce)),
closes
[#&#8203;19174](https://redirect.github.com/vitejs/vite/issues/19174)
- fix: tree shake stringified JSON imports
([#&#8203;19189](https://redirect.github.com/vitejs/vite/issues/19189))
([f2aed62](f2aed62d0b)),
closes
[#&#8203;19189](https://redirect.github.com/vitejs/vite/issues/19189)
- fix: use shared sigterm callback
([#&#8203;19203](https://redirect.github.com/vitejs/vite/issues/19203))
([47039f4](47039f4643)),
closes
[#&#8203;19203](https://redirect.github.com/vitejs/vite/issues/19203)
- fix(deps): update all non-major dependencies
([#&#8203;19098](https://redirect.github.com/vitejs/vite/issues/19098))
([8639538](8639538e64)),
closes
[#&#8203;19098](https://redirect.github.com/vitejs/vite/issues/19098)
- fix(optimizer): use correct default install state path for yarn PnP
([#&#8203;19119](https://redirect.github.com/vitejs/vite/issues/19119))
([e690d8b](e690d8bb1e)),
closes
[#&#8203;19119](https://redirect.github.com/vitejs/vite/issues/19119)
- fix(types): improve `ESBuildOptions.include / exclude` type to allow
`readonly (string | RegExp)[]`
([ea53e70](ea53e70952)),
closes
[#&#8203;19146](https://redirect.github.com/vitejs/vite/issues/19146)
- chore(deps): update dependency pathe to v2
([#&#8203;19139](https://redirect.github.com/vitejs/vite/issues/19139))
([71506f0](71506f0a8d)),
closes
[#&#8203;19139](https://redirect.github.com/vitejs/vite/issues/19139)

###
[`v6.0.7`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small607-2025-01-02-small)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v6.0.6...v6.0.7)

- fix: fix `minify` when `builder.sharedPlugins: true`
([#&#8203;19025](https://redirect.github.com/vitejs/vite/issues/19025))
([f7b1964](f7b1964d3a)),
closes
[#&#8203;19025](https://redirect.github.com/vitejs/vite/issues/19025)
- fix: skip the plugin if it has been called before with the same id and
importer
([#&#8203;19016](https://redirect.github.com/vitejs/vite/issues/19016))
([b178c90](b178c90c7d)),
closes
[#&#8203;19016](https://redirect.github.com/vitejs/vite/issues/19016)
- fix(html): error while removing `vite-ignore` attribute for inline
script
([#&#8203;19062](https://redirect.github.com/vitejs/vite/issues/19062))
([a492253](a4922537a8)),
closes
[#&#8203;19062](https://redirect.github.com/vitejs/vite/issues/19062)
- fix(ssr): fix semicolon injection by ssr transform
([#&#8203;19097](https://redirect.github.com/vitejs/vite/issues/19097))
([1c102d5](1c102d517d)),
closes
[#&#8203;19097](https://redirect.github.com/vitejs/vite/issues/19097)
- perf: skip globbing for static path in warmup
([#&#8203;19107](https://redirect.github.com/vitejs/vite/issues/19107))
([677508b](677508bf82)),
closes
[#&#8203;19107](https://redirect.github.com/vitejs/vite/issues/19107)
- feat(css): show lightningcss warnings
([#&#8203;19076](https://redirect.github.com/vitejs/vite/issues/19076))
([b07c036](b07c036faf)),
closes
[#&#8203;19076](https://redirect.github.com/vitejs/vite/issues/19076)

###
[`v6.0.6`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small606-2024-12-26-small)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v6.0.5...v6.0.6)

- fix: replace runner-side path normalization with `fetchModule`-side
resolve
([#&#8203;18361](https://redirect.github.com/vitejs/vite/issues/18361))
([9f10261](9f10261e76)),
closes
[#&#8203;18361](https://redirect.github.com/vitejs/vite/issues/18361)
- fix(css): resolve style tags in HTML files correctly for lightningcss
([#&#8203;19001](https://redirect.github.com/vitejs/vite/issues/19001))
([afff05c](afff05c032)),
closes
[#&#8203;19001](https://redirect.github.com/vitejs/vite/issues/19001)
- fix(css): show correct error when unknown placeholder is used for CSS
modules pattern in lightningcs
([9290d85](9290d85b5d)),
closes
[#&#8203;19070](https://redirect.github.com/vitejs/vite/issues/19070)
- fix(resolve): handle package.json with UTF-8 BOM
([#&#8203;19000](https://redirect.github.com/vitejs/vite/issues/19000))
([902567a](902567ac53)),
closes
[#&#8203;19000](https://redirect.github.com/vitejs/vite/issues/19000)
- fix(ssrTransform): preserve line offset when transforming imports
([#&#8203;19004](https://redirect.github.com/vitejs/vite/issues/19004))
([1aa434e](1aa434e801)),
closes
[#&#8203;19004](https://redirect.github.com/vitejs/vite/issues/19004)
- chore: fix typo in comment
([#&#8203;19067](https://redirect.github.com/vitejs/vite/issues/19067))
([eb06ec3](eb06ec30bb)),
closes
[#&#8203;19067](https://redirect.github.com/vitejs/vite/issues/19067)
- chore: update comment about `build.target`
([#&#8203;19047](https://redirect.github.com/vitejs/vite/issues/19047))
([0e9e81f](0e9e81f622)),
closes
[#&#8203;19047](https://redirect.github.com/vitejs/vite/issues/19047)
- revert: unpin esbuild version
([#&#8203;19043](https://redirect.github.com/vitejs/vite/issues/19043))
([8bfe247](8bfe247511)),
closes
[#&#8203;19043](https://redirect.github.com/vitejs/vite/issues/19043)
- test(ssr): test virtual module with query
([#&#8203;19044](https://redirect.github.com/vitejs/vite/issues/19044))
([a1f4b46](a1f4b46896)),
closes
[#&#8203;19044](https://redirect.github.com/vitejs/vite/issues/19044)

###
[`v6.0.5`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small605-2024-12-20-small)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v6.0.4...v6.0.5)

- fix: esbuild regression (pin to 0.24.0)
([#&#8203;19027](https://redirect.github.com/vitejs/vite/issues/19027))
([4359e0d](4359e0d5b3)),
closes
[#&#8203;19027](https://redirect.github.com/vitejs/vite/issues/19027)

###
[`v6.0.4`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small604-2024-12-19-small)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v6.0.3...v6.0.4)

- fix: `this.resolve` skipSelf should not skip for different `id` or
`import`
([#&#8203;18903](https://redirect.github.com/vitejs/vite/issues/18903))
([4727320](472732057c)),
closes
[#&#8203;18903](https://redirect.github.com/vitejs/vite/issues/18903)
- fix: fallback terser to main thread when function options are used
([#&#8203;18987](https://redirect.github.com/vitejs/vite/issues/18987))
([12b612d](12b612d8be)),
closes
[#&#8203;18987](https://redirect.github.com/vitejs/vite/issues/18987)
- fix: merge client and ssr values for `pluginContainer.getModuleInfo`
([#&#8203;18895](https://redirect.github.com/vitejs/vite/issues/18895))
([258cdd6](258cdd637d)),
closes
[#&#8203;18895](https://redirect.github.com/vitejs/vite/issues/18895)
- fix(css): escape double quotes in `url()` when lightningcss is used
([#&#8203;18997](https://redirect.github.com/vitejs/vite/issues/18997))
([3734f80](3734f8099e)),
closes
[#&#8203;18997](https://redirect.github.com/vitejs/vite/issues/18997)
- fix(css): root relative import in sass modern API on Windows
([#&#8203;18945](https://redirect.github.com/vitejs/vite/issues/18945))
([c4b532c](c4b532cc90)),
closes
[#&#8203;18945](https://redirect.github.com/vitejs/vite/issues/18945)
- fix(css): skip non css in custom sass importer
([#&#8203;18970](https://redirect.github.com/vitejs/vite/issues/18970))
([21680bd](21680bdf9c)),
closes
[#&#8203;18970](https://redirect.github.com/vitejs/vite/issues/18970)
- fix(deps): update all non-major dependencies
([#&#8203;18967](https://redirect.github.com/vitejs/vite/issues/18967))
([d88d000](d88d0004a8)),
closes
[#&#8203;18967](https://redirect.github.com/vitejs/vite/issues/18967)
- fix(deps): update all non-major dependencies
([#&#8203;18996](https://redirect.github.com/vitejs/vite/issues/18996))
([2b4f115](2b4f115129)),
closes
[#&#8203;18996](https://redirect.github.com/vitejs/vite/issues/18996)
- fix(optimizer): keep NODE_ENV as-is when keepProcessEnv is `true`
([#&#8203;18899](https://redirect.github.com/vitejs/vite/issues/18899))
([8a6bb4e](8a6bb4e11d)),
closes
[#&#8203;18899](https://redirect.github.com/vitejs/vite/issues/18899)
- fix(ssr): recreate ssrCompatModuleRunner on restart
([#&#8203;18973](https://redirect.github.com/vitejs/vite/issues/18973))
([7d6dd5d](7d6dd5d1d6)),
closes
[#&#8203;18973](https://redirect.github.com/vitejs/vite/issues/18973)
- chore: better validation error message for dts build
([#&#8203;18948](https://redirect.github.com/vitejs/vite/issues/18948))
([63b82f1](63b82f1e29)),
closes
[#&#8203;18948](https://redirect.github.com/vitejs/vite/issues/18948)
- chore(deps): update all non-major dependencies
([#&#8203;18916](https://redirect.github.com/vitejs/vite/issues/18916))
([ef7a6a3](ef7a6a35e6)),
closes
[#&#8203;18916](https://redirect.github.com/vitejs/vite/issues/18916)
- chore(deps): update dependency
[@&#8203;rollup/plugin-node-resolve](https://redirect.github.com/rollup/plugin-node-resolve)
to v16
([#&#8203;18968](https://redirect.github.com/vitejs/vite/issues/18968))
([62fad6d](62fad6d79f)),
closes
[#&#8203;18968](https://redirect.github.com/vitejs/vite/issues/18968)
- refactor: make internal invoke event to use the same interface with
`handleInvoke`
([#&#8203;18902](https://redirect.github.com/vitejs/vite/issues/18902))
([27f691b](27f691b0c7)),
closes
[#&#8203;18902](https://redirect.github.com/vitejs/vite/issues/18902)
- refactor: simplify manifest plugin code
([#&#8203;18890](https://redirect.github.com/vitejs/vite/issues/18890))
([1bfe21b](1bfe21b944)),
closes
[#&#8203;18890](https://redirect.github.com/vitejs/vite/issues/18890)
- test: test `ModuleRunnerTransport` `invoke` API
([#&#8203;18865](https://redirect.github.com/vitejs/vite/issues/18865))
([e5f5301](e5f5301924)),
closes
[#&#8203;18865](https://redirect.github.com/vitejs/vite/issues/18865)
- test: test output hash changes
([#&#8203;18898](https://redirect.github.com/vitejs/vite/issues/18898))
([bfbb130](bfbb130fcc)),
closes
[#&#8203;18898](https://redirect.github.com/vitejs/vite/issues/18898)

###
[`v6.0.3`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small603-2024-12-05-small)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v6.0.2...v6.0.3)

- fix: handle postcss load unhandled rejections
([#&#8203;18886](https://redirect.github.com/vitejs/vite/issues/18886))
([d5fb653](d5fb653c15)),
closes
[#&#8203;18886](https://redirect.github.com/vitejs/vite/issues/18886)
- fix: make handleInvoke interface compatible with invoke
([#&#8203;18876](https://redirect.github.com/vitejs/vite/issues/18876))
([a1dd396](a1dd396da8)),
closes
[#&#8203;18876](https://redirect.github.com/vitejs/vite/issues/18876)
- fix: make result interfaces for `ModuleRunnerTransport#invoke` more
explicit
([#&#8203;18851](https://redirect.github.com/vitejs/vite/issues/18851))
([a75fc31](a75fc3193d)),
closes
[#&#8203;18851](https://redirect.github.com/vitejs/vite/issues/18851)
- fix: merge `environments.ssr.resolve` with root `ssr` config
([#&#8203;18857](https://redirect.github.com/vitejs/vite/issues/18857))
([3104331](310433106e)),
closes
[#&#8203;18857](https://redirect.github.com/vitejs/vite/issues/18857)
- fix: no permission to create vite config file
([#&#8203;18844](https://redirect.github.com/vitejs/vite/issues/18844))
([ff47778](ff47778004)),
closes
[#&#8203;18844](https://redirect.github.com/vitejs/vite/issues/18844)
- fix: remove CSS import in CJS correctly in some cases
([#&#8203;18885](https://redirect.github.com/vitejs/vite/issues/18885))
([690a36f](690a36ffdb)),
closes
[#&#8203;18885](https://redirect.github.com/vitejs/vite/issues/18885)
- fix(config): bundle files referenced with imports field
([#&#8203;18887](https://redirect.github.com/vitejs/vite/issues/18887))
([2b5926a](2b5926a0e7)),
closes
[#&#8203;18887](https://redirect.github.com/vitejs/vite/issues/18887)
- fix(config): make stacktrace path correct when sourcemap is enabled
([#&#8203;18833](https://redirect.github.com/vitejs/vite/issues/18833))
([20fdf21](20fdf210ee)),
closes
[#&#8203;18833](https://redirect.github.com/vitejs/vite/issues/18833)
- fix(css): rewrite url when image-set and url exist at the same time
([#&#8203;18868](https://redirect.github.com/vitejs/vite/issues/18868))
([d59efd8](d59efd8dfd)),
closes
[#&#8203;18868](https://redirect.github.com/vitejs/vite/issues/18868)
- fix(deps): update all non-major dependencies
([#&#8203;18853](https://redirect.github.com/vitejs/vite/issues/18853))
([5c02236](5c0223636f)),
closes
[#&#8203;18853](https://redirect.github.com/vitejs/vite/issues/18853)
- fix(html): allow unexpected question mark in tag name
([#&#8203;18852](https://redirect.github.com/vitejs/vite/issues/18852))
([1b54e50](1b54e506a4)),
closes
[#&#8203;18852](https://redirect.github.com/vitejs/vite/issues/18852)
- fix(module-runner): decode uri for file url passed to import
([#&#8203;18837](https://redirect.github.com/vitejs/vite/issues/18837))
([88e49aa](88e49aa041)),
closes
[#&#8203;18837](https://redirect.github.com/vitejs/vite/issues/18837)
- refactor: fix logic errors found by no-unnecessary-condition rule
([#&#8203;18891](https://redirect.github.com/vitejs/vite/issues/18891))
([ea802f8](ea802f8f8b)),
closes
[#&#8203;18891](https://redirect.github.com/vitejs/vite/issues/18891)
- chore: fix duplicate attributes issue number in comment
([#&#8203;18860](https://redirect.github.com/vitejs/vite/issues/18860))
([ffee618](ffee61893c)),
closes
[#&#8203;18860](https://redirect.github.com/vitejs/vite/issues/18860)

###
[`v6.0.2`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small602-2024-12-02-small)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v6.0.1...v6.0.2)

- chore: run typecheck in unit tests
([#&#8203;18858](https://redirect.github.com/vitejs/vite/issues/18858))
([49f20bb](49f20bb777)),
closes
[#&#8203;18858](https://redirect.github.com/vitejs/vite/issues/18858)
- chore: update broken links in changelog
([#&#8203;18802](https://redirect.github.com/vitejs/vite/issues/18802))
([cb754f8](cb754f8acc)),
closes
[#&#8203;18802](https://redirect.github.com/vitejs/vite/issues/18802)
- chore: update broken links in changelog
([#&#8203;18804](https://redirect.github.com/vitejs/vite/issues/18804))
([47ec49f](47ec49ffa1)),
closes
[#&#8203;18804](https://redirect.github.com/vitejs/vite/issues/18804)
- fix: don't store temporary vite config file in `node_modules` if deno
([#&#8203;18823](https://redirect.github.com/vitejs/vite/issues/18823))
([a20267b](a20267bb93)),
closes
[#&#8203;18823](https://redirect.github.com/vitejs/vite/issues/18823)
- fix(css): referencing aliased svg asset with lightningcss enabled
errored
([#&#8203;18819](https://redirect.github.com/vitejs/vite/issues/18819))
([ae68958](ae68958691)),
closes
[#&#8203;18819](https://redirect.github.com/vitejs/vite/issues/18819)
- fix(manifest): use `style.css` as a key for the style file for
`cssCodesplit: false`
([#&#8203;18820](https://redirect.github.com/vitejs/vite/issues/18820))
([ec51115](ec51115255)),
closes
[#&#8203;18820](https://redirect.github.com/vitejs/vite/issues/18820)
- fix(optimizer): resolve all promises when cancelled
([#&#8203;18826](https://redirect.github.com/vitejs/vite/issues/18826))
([d6e6194](d6e6194706)),
closes
[#&#8203;18826](https://redirect.github.com/vitejs/vite/issues/18826)
- fix(resolve): don't set builtinModules to `external` by default
([#&#8203;18821](https://redirect.github.com/vitejs/vite/issues/18821))
([2250ffa](2250ffac62)),
closes
[#&#8203;18821](https://redirect.github.com/vitejs/vite/issues/18821)
- fix(ssr): set `ssr.target: 'webworker'` defaults as fallback
([#&#8203;18827](https://redirect.github.com/vitejs/vite/issues/18827))
([b39e696](b39e69638b)),
closes
[#&#8203;18827](https://redirect.github.com/vitejs/vite/issues/18827)
- feat(css): format lightningcss error
([#&#8203;18818](https://redirect.github.com/vitejs/vite/issues/18818))
([dac7992](dac7992e87)),
closes
[#&#8203;18818](https://redirect.github.com/vitejs/vite/issues/18818)
- refactor: make properties of ResolvedServerOptions and
ResolvedPreviewOptions required
([#&#8203;18796](https://redirect.github.com/vitejs/vite/issues/18796))
([51a5569](51a5569e66)),
closes
[#&#8203;18796](https://redirect.github.com/vitejs/vite/issues/18796)

###
[`v6.0.1`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#small601-2024-11-27-small)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v6.0.0...v6.0.1)

- fix: default empty server `proxy` prevents starting http2 server
([#&#8203;18788](https://redirect.github.com/vitejs/vite/issues/18788))
([bbaf514](bbaf514fb7)),
closes
[#&#8203;18788](https://redirect.github.com/vitejs/vite/issues/18788)
- fix(manifest): do not override existing js manifest entry
([#&#8203;18776](https://redirect.github.com/vitejs/vite/issues/18776))
([3b0837e](3b0837e0b9)),
closes
[#&#8203;18776](https://redirect.github.com/vitejs/vite/issues/18776)
- fix(server): close \_ssrCompatModuleRunner on server close
([#&#8203;18784](https://redirect.github.com/vitejs/vite/issues/18784))
([9b4c410](9b4c410ddd)),
closes
[#&#8203;18784](https://redirect.github.com/vitejs/vite/issues/18784)
- fix(server): skip hot channel client normalization for wsServer
([#&#8203;18782](https://redirect.github.com/vitejs/vite/issues/18782))
([cc7670a](cc7670abaf)),
closes
[#&#8203;18782](https://redirect.github.com/vitejs/vite/issues/18782)
- fix(worker): fix `applyToEnvironment` hooks on worker build
([#&#8203;18793](https://redirect.github.com/vitejs/vite/issues/18793))
([0c6cdb0](0c6cdb0f88)),
closes
[#&#8203;18793](https://redirect.github.com/vitejs/vite/issues/18793)
- chore: flat v6 config file
([#&#8203;18777](https://redirect.github.com/vitejs/vite/issues/18777))
([c7b3308](c7b3308326)),
closes
[#&#8203;18777](https://redirect.github.com/vitejs/vite/issues/18777)
- chore: split changelog
([#&#8203;18787](https://redirect.github.com/vitejs/vite/issues/18787))
([8542632](8542632b3b)),
closes
[#&#8203;18787](https://redirect.github.com/vitejs/vite/issues/18787)
- chore: update changelog for v6
([#&#8203;18773](https://redirect.github.com/vitejs/vite/issues/18773))
([b254fac](b254fac4aa)),
closes
[#&#8203;18773](https://redirect.github.com/vitejs/vite/issues/18773)
- revert: update moduleResolution value casing
([#&#8203;18409](https://redirect.github.com/vitejs/vite/issues/18409))
([#&#8203;18774](https://redirect.github.com/vitejs/vite/issues/18774))
([b0fc6e3](b0fc6e3c25)),
closes
[#&#8203;18409](https://redirect.github.com/vitejs/vite/issues/18409)
[#&#8203;18774](https://redirect.github.com/vitejs/vite/issues/18774)

###
[`v6.0.0`](https://redirect.github.com/vitejs/vite/blob/HEAD/packages/vite/CHANGELOG.md#600-2024-11-26)

[Compare
Source](https://redirect.github.com/vitejs/vite/compare/v5.4.14...v6.0.0)

- fix: `createRunnableDevEnvironment` returns `RunnableDevEnvironment`,
not `DevEnvironment`
([#&#8203;18673](https://redirect.github.com/vitejs/vite/issues/18673))
([74221c3](74221c391b)),
closes
[#&#8203;18673](https://redirect.github.com/vitejs/vite/issues/18673)
- fix: `getModulesByFile` should return a `serverModule`
([#&#8203;18715](https://redirect.github.com/vitejs/vite/issues/18715))
([b80d5ec](b80d5ecbbc)),
closes
[#&#8203;18715](https://redirect.github.com/vitejs/vite/issues/18715)
- fix: catch error in full reload handler
([#&#8203;18713](https://redirect.github.com/vitejs/vite/issues/18713))
([a10e741](a10e741065)),
closes
[#&#8203;18713](https://redirect.github.com/vitejs/vite/issues/18713)
- fix: display pre-transform error details
([#&#8203;18764](https://redirect.github.com/vitejs/vite/issues/18764))
([554f45f](554f45f4d8)),
closes
[#&#8203;18764](https://redirect.github.com/vitejs/vite/issues/18764)
- fix: exit code on `SIGTERM`
([#&#8203;18741](https://redirect.github.com/vitejs/vite/issues/18741))
([cc55e36](cc55e36dd3)),
closes
[#&#8203;18741](https://redirect.github.com/vitejs/vite/issues/18741)
- fix: expose missing `InterceptorOptions` type
([#&#8203;18766](https://redirect.github.com/vitejs/vite/issues/18766))
([6252c60](6252c60356)),
closes
[#&#8203;18766](https://redirect.github.com/vitejs/vite/issues/18766)
- fix: log error when send in module runner failed
([#&#8203;18753](https://redirect.github.com/vitejs/vite/issues/18753))
([ba821bb](ba821bb63e)),
closes
[#&#8203;18753](https://redirect.github.com/vitejs/vite/issues/18753)
- fix(client): overlay not appearing when multiple vite clients were
loaded
([#&#8203;18647](https://redirect.github.com/vitejs/vite/issues/18647))
([27d70b5](27d70b5fa6)),
closes
[#&#8203;18647](https://redirect.github.com/vitejs/vite/issues/18647)
- fix(deps): update all non-major dependencies
([#&#8203;18691](https://redirect.github.com/vitejs/vite/issues/18691))
([f005461](f005461ecc)),
closes
[#&#8203;18691](https://redirect.github.com/vitejs/vite/issues/18691)
- fix(html): fix inline proxy modules invalidation
([#&#8203;18696](https://redirect.github.com/vitejs/vite/issues/18696))
([8ab04b7](8ab04b70ad)),
closes
[#&#8203;18696](https://redirect.github.com/vitejs/vite/issues/18696)
- fix(module-runner): make evaluator optional
([#&#8203;18672](https://redirect.github.com/vitejs/vite/issues/18672))
([fd1283f](fd1283fe27)),
closes
[#&#8203;18672](https://redirect.github.com/vitejs/vite/issues/18672)
- fix(optimizer): detect npm / yarn / pnpm dependency changes correctly
([#&#8203;17336](https://redirect.github.com/vitejs/vite/issues/17336))
([#&#8203;18560](https://redirect.github.com/vitejs/vite/issues/18560))
([818cf3e](818cf3e7bf)),
closes
[#&#8203;17336](https://redirect.github.com/vitejs/vite/issues/17336)
[#&#8203;18560](https://redirect.github.com/vitejs/vite/issues/18560)
- fix(optimizer): trigger onCrawlEnd after manual included deps are
registered
([#&#8203;18733](https://redirect.github.com/vitejs/vite/issues/18733))
([dc60410](dc6041099c)),
closes
[#&#8203;18733](https://redirect.github.com/vitejs/vite/issues/18733)
- fix(optimizer): workaround firefox's false warning for no sources
source map
([#&#8203;18665](https://redirect.github.com/vitejs/vite/issues/18665))
([473424e](473424ee8d)),
closes
[#&#8203;18665](https://redirect.github.com/vitejs/vite/issues/18665)
- fix(ssr): replace `__vite_ssr_identity__` with `(0, ...)` and inject
`;` between statements
([#&#8203;18748](https://redirect.github.com/vitejs/vite/issues/18748))
([94546be](94546be183)),
closes
[#&#8203;18748](https://redirect.github.com/vitejs/vite/issues/18748)
- chore: add 5.4.x changelogs
([#&#8203;18768](https://redirect.github.com/vitejs/vite/issues/18768))
([26b58c8](26b58c8130)),
closes
[#&#8203;18768](https://redirect.github.com/vitejs/vite/issues/18768)
- chore: add some comments about mimes
([#&#8203;18705](https://redirect.github.com/vitejs/vite/issues/18705))
([f07e9b9](f07e9b9d01)),
closes
[#&#8203;18705](https://redirect.github.com/vitejs/vite/issues/18705)
- chore(deps): update all non-major dependencies
([#&#8203;18746](https://redirect.github.com/vitejs/vite/issues/18746))
([0ad16e9](0ad16e92d5)),
closes
[#&#8203;18746](https://redirect.github.com/vitejs/vite/issues/18746)
- perf: reduce bundle size for `Object.keys(import.meta.glob(...))` /
\`Object.values(import.meta.glob(
([ed99a2c](ed99a2cd31)),
closes
[#&#8203;18666](https://redirect.github.com/vitejs/vite/issues/18666)
- perf(worker): inline worker without base64
([#&#8203;18752](https://redirect.github.com/vitejs/vite/issues/18752))
([90c66c9](90c66c95ab)),
closes
[#&#8203;18752](https://redirect.github.com/vitejs/vite/issues/18752)
- feat: add support for .cur type
([#&#8203;18680](https://redirect.github.com/vitejs/vite/issues/18680))
([5ec9eed](5ec9eedc80)),
closes
[#&#8203;18680](https://redirect.github.com/vitejs/vite/issues/18680)
- feat: enable HMR by default on ModuleRunner side
([#&#8203;18749](https://redirect.github.com/vitejs/vite/issues/18749))
([4d2abc7](4d2abc7bba)),
closes
[#&#8203;18749](https://redirect.github.com/vitejs/vite/issues/18749)
- feat: support `module-sync` condition when loading config if enabled
([#&#8203;18650](https://redirect.github.com/vitejs/vite/issues/18650))
([cf5028d](cf5028d4bf)),
closes
[#&#8203;18650](https://redirect.github.com/vitejs/vite/issues/18650)
- feat!: drop node 21 support in version ranges
([#&#8203;18729](https://redirect.github.com/vitejs/vite/issues/18729))
([a384d8f](a384d8fd39)),
closes
[#&#8203;18729](https://redirect.github.com/vitejs/vite/issues/18729)
- fix(deps)!: update dependency dotenv-expand to v12
([#&#8203;18697](https://redirect.github.com/vitejs/vite/issues/18697))
([0c658de](0c658de41f)),
closes
[#&#8203;18697](https://redirect.github.com/vitejs/vite/issues/18697)
- docs: rename `HotUpdateContext` to `HotUpdateOptions`
([#&#8203;18718](https://redirect.github.com/vitejs/vite/issues/18718))
([824c347](824c347fa2)),
closes
[#&#8203;18718](https://redirect.github.com/vitejs/vite/issues/18718)
- test: simplify `playground/json/__tests__/ssr`
([#&#8203;18701](https://redirect.github.com/vitejs/vite/issues/18701))
([f731ca2](f731ca21ea)),
closes
[#&#8203;18701](https://redirect.github.com/vitejs/vite/issues/18701)
- refactor: first character judgment replacement regexp
([#&#8203;18658](https://redirect.github.com/vitejs/vite/issues/18658))
([58f1df3](58f1df3288)),
closes
[#&#8203;18658](https://redirect.github.com/vitejs/vite/issues/18658)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-24 11:32:50 -05:00
renovate[bot]
f6e4ba47d4 chore(deps): update dependency eslint-config-prettier to v10 (#1164)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[eslint-config-prettier](https://redirect.github.com/prettier/eslint-config-prettier)
| [`^9.1.0` ->
`^10.0.0`](https://renovatebot.com/diffs/npm/eslint-config-prettier/9.1.0/10.0.1)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-config-prettier/10.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-config-prettier/10.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-config-prettier/9.1.0/10.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-config-prettier/9.1.0/10.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>prettier/eslint-config-prettier
(eslint-config-prettier)</summary>

###
[`v10.0.1`](https://redirect.github.com/prettier/eslint-config-prettier/releases/tag/v10.0.1)

[Compare
Source](https://redirect.github.com/prettier/eslint-config-prettier/compare/v10.0.0...v10.0.1)

### eslint-config-prettier

#### 10.0.1

#### What's Changed

- chore: migrate to changeset for automatically releasing by
[@&#8203;JounQin](https://redirect.github.com/JounQin) in
[https://github.com/prettier/eslint-config-prettier/pull/278](https://redirect.github.com/prettier/eslint-config-prettier/pull/278)
- add support for `@stylistic/eslint-plugin` by
[@&#8203;abrahamguo](https://redirect.github.com/abrahamguo) in
[https://github.com/prettier/eslint-config-prettier/pull/272](https://redirect.github.com/prettier/eslint-config-prettier/pull/272)

#### New Contributors

- [@&#8203;JounQin](https://redirect.github.com/JounQin) made their
first contribution in
[https://github.com/prettier/eslint-config-prettier/pull/278](https://redirect.github.com/prettier/eslint-config-prettier/pull/278)
- [@&#8203;abrahamguo](https://redirect.github.com/abrahamguo) made
their first contribution in
[https://github.com/prettier/eslint-config-prettier/pull/272](https://redirect.github.com/prettier/eslint-config-prettier/pull/272)

**Full Changelog**:
https://github.com/prettier/eslint-config-prettier/compare/v9.1.0...v10.0.1

###
[`v10.0.0`](https://redirect.github.com/prettier/eslint-config-prettier/blob/HEAD/CHANGELOG.md#1000)

[Compare
Source](https://redirect.github.com/prettier/eslint-config-prettier/compare/v9.1.0...v10.0.0)

##### Major Changes

-
[#&#8203;272](https://redirect.github.com/prettier/eslint-config-prettier/pull/272)
[`5be64be`](5be64bef68)
Thanks [@&#8203;abrahamguo](https://redirect.github.com/abrahamguo)! -
add support for
[@&#8203;stylistic](https://redirect.github.com/stylistic) formatting
rules

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-24 11:32:26 -05:00
renovate[bot]
89620e9189 chore(deps): update dependency @nuxt/eslint to v1 (#1161)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nuxt/eslint](https://redirect.github.com/nuxt/eslint)
([source](https://redirect.github.com/nuxt/eslint/tree/HEAD/packages/module))
| [`^0.7.3` ->
`^1.0.0`](https://renovatebot.com/diffs/npm/@nuxt%2feslint/0.7.6/1.1.0)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@nuxt%2feslint/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nuxt%2feslint/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nuxt%2feslint/0.7.6/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nuxt%2feslint/0.7.6/1.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>nuxt/eslint (@&#8203;nuxt/eslint)</summary>

###
[`v1.1.0`](https://redirect.github.com/nuxt/eslint/releases/tag/v1.1.0)

[Compare
Source](https://redirect.github.com/nuxt/eslint/compare/v1.0.1...v1.1.0)

#####    🚀 Features

- Migrate to `unicorn` v57, `stylistic` v4  -  by
[@&#8203;antfu](https://redirect.github.com/antfu)
[<samp>(a9846)</samp>](https://redirect.github.com/nuxt/eslint/commit/a9846af)

#####     [View changes on
GitHub](https://redirect.github.com/nuxt/eslint/compare/v1.0.1...v1.1.0)

###
[`v1.0.1`](https://redirect.github.com/nuxt/eslint/releases/tag/v1.0.1)

[Compare
Source](https://redirect.github.com/nuxt/eslint/compare/v1.0.0...v1.0.1)

#####    🐞 Bug Fixes

- Support non-hoisted dts type, fix
[#&#8203;539](https://redirect.github.com/nuxt/eslint/issues/539)  -  by
[@&#8203;antfu](https://redirect.github.com/antfu) in
[https://github.com/nuxt/eslint/issues/539](https://redirect.github.com/nuxt/eslint/issues/539)
[<samp>(4f3c1)</samp>](https://redirect.github.com/nuxt/eslint/commit/4f3c1d9)

#####     [View changes on
GitHub](https://redirect.github.com/nuxt/eslint/compare/v1.0.0...v1.0.1)

###
[`v1.0.0`](https://redirect.github.com/nuxt/eslint/releases/tag/v1.0.0)

[Compare
Source](https://redirect.github.com/nuxt/eslint/compare/v0.7.6...v1.0.0)

#####    🚨 Breaking Changes

- Drop legacy configs, requires ESLint v9 and ESM  -  by
[@&#8203;antfu](https://redirect.github.com/antfu) in
[https://github.com/nuxt/eslint/issues/534](https://redirect.github.com/nuxt/eslint/issues/534)
[<samp>(cbcd6)</samp>](https://redirect.github.com/nuxt/eslint/commit/cbcd674)

#####     [View changes on
GitHub](https://redirect.github.com/nuxt/eslint/compare/v0.7.6...v1.0.0)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-24 11:32:12 -05:00
Eli Bosley
a0306269c6 feat: update theme application logic and color picker (#1181)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Upgraded the theme customization interface with a dropdown that lets
you choose from multiple themes (Light, Dark, Azure, Gray). Users can
now adjust options like text colors, background color, gradients, and
banner display more intuitively.
- Introduced a structured approach to theme variables, enhancing
compatibility and customization options.

- **Style**
- Enhanced the header’s visual presentation by introducing dynamic
background imagery and refined layout adjustments for a more polished
look.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-24 11:31:46 -05:00
Eli Bosley
e11d5e976d docs: add license to package jsons (#1129)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Documentation**
- Added the complete GNU General Public License (GPL) Version 2 text to
the project’s licensing documentation, clarifying usage conditions and
disclaimers.

- **Chores**
- Updated licensing declarations across multiple project components,
ensuring all parts are now distributed under the GPL-2.0 license.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2025-02-24 09:27:23 -05:00
Eli Bosley
365dcae04b fix: log errors 2025-02-21 16:23:04 -05:00
Eli Bosley
a9d5ca8899 fix: fix changelog thing again 2025-02-21 16:20:51 -05:00
Eli Bosley
b24a575cbb fix: load tag correctly 2025-02-21 16:18:49 -05:00
Eli Bosley
b49159022d fix: re-release fixed 2025-02-21 16:14:38 -05:00
Eli Bosley
c0ad2e138c chore: allow editing releases and properly escape changelogs (#1190)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Enhanced the release process to update the plugin changelog more
reliably.
- Now supports updating release notes for both new and edited releases,
ensuring accurate and secure changelog information.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-21 16:09:53 -05:00
github-actions[bot]
d413be8dcb chore(main): release 4.1.3 (#1188)
🤖 I have created a release *beep* *boop*
---


## [4.1.3](https://github.com/unraid/api/compare/v4.1.2...v4.1.3)
(2025-02-21)


### Bug Fixes

* chown correctly ([#1185](https://github.com/unraid/api/issues/1185))
([46a05eb](46a05eb76d))
* create releases as drafts
([5483e9f](5483e9fee9))
* **deps:** update all non-major dependencies
([#1168](https://github.com/unraid/api/issues/1168))
([248d211](248d211050))
* revert config
([7957c2a](7957c2a681))
* small modal window
([#1183](https://github.com/unraid/api/issues/1183))
([08423b8](08423b8dae))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-21 15:37:09 -05:00
github-actions[bot]
653b6df4d9 chore(main): release 4.1.2 (#1187)
🤖 I have created a release *beep* *boop*
---


## [4.1.2](https://github.com/unraid/api/compare/v4.1.3...v4.1.2)
(2025-02-21)


### Features

* add api key creation logic
([a1351b0](a1351b0469))
* add category.json
([e784391](e784391ac3))
* add command to package.json scripts
([3348a47](3348a47470))
* add csrf support to api & web components
([#999](https://github.com/unraid/api/issues/999))
([f0f5a30](f0f5a3057a))
* add description flag, remove console log, and update readme
([85cdb8f](85cdb8f525))
* add developer docs
([#1128](https://github.com/unraid/api/issues/1128))
([75474bd](75474bde47))
* add line about recommendation for sso command
([b63720a](b63720a6f2))
* add log rotation
([b1d9ad7](b1d9ad7ef1))
* add logging around fixture downloads
([fa16dcd](fa16dcd801))
* add logrotate cron again
([097415f](097415f6b8))
* add patch for auth-request.php
([b1a1779](b1a1779a8b))
* add unraid-ui documentation
([#1142](https://github.com/unraid/api/issues/1142))
([6378047](6378047bc4))
* add user with cli
([cb59090](cb59090698))
* address log level feedback
([bb95795](bb95795a31))
* allow csrf passing through querystring
([3a8c9b1](3a8c9b13ee))
* allow deletion and creation of files with patches
([1392bde](1392bdeecb))
* always ensureDirectory for keys exists
([8b93bce](8b93bcea08))
* always start the API and run npm link from script path
([bb6baf9](bb6baf9bf4))
* **api:** graphql sandbox on unraid servers
([#1047](https://github.com/unraid/api/issues/1047))
([5dd36d1](5dd36d1836))
* **api:** omit tz from sys time date format by default
([c36082e](c36082e82b))
* **api:** rm 2fa & t2fa from myservers config type
([#996](https://github.com/unraid/api/issues/996))
([f45719f](f45719fa6b))
* array iteration for restoring files
([349145b](349145ba53))
* async disk mapping
([f22b262](f22b262830))
* async hypervisor and FIXED vm listing
([cdfb3c7](cdfb3c772b))
* attempt to resolve performance issues with rm earlier in build …
([#1152](https://github.com/unraid/api/issues/1152))
([c74bdd8](c74bdd8890))
* attempt to start unraid-api with background task
([73a1249](73a12496d5))
* auto-docusaurus-prs
([#1127](https://github.com/unraid/api/issues/1127))
([8a57576](8a575765a9))
* automatic session setup for dev
([e885936](e88593620b))
* back to callbackUrl
([428ad15](428ad15ec7))
* begin building plugin with node instead of bash
([#1120](https://github.com/unraid/api/issues/1120))
([4f5c367](4f5c367fdf))
* begin fixing dark mode in the webcomponents
([2443561](24435613f8))
* begin nuking alpha beta gamma
([cb91fbb](cb91fbb054))
* better patch application
([445f3b5](445f3b50b1))
* better pm2 calls, log lines
([33dd90a](33dd90af04))
* bug report template
([d6fde34](d6fde34365))
* checkout correct branch on close
([#1123](https://github.com/unraid/api/issues/1123))
([e7b7caa](e7b7caae43))
* cleanup config entries
([c2e29df](c2e29dfb5f))
* cleanup disclaimer and command to add users
([3867dfa](3867dfacb2))
* cli Commands
([7fa849d](7fa849d2a0))
* CLI options for adding and deleting users
([bc04129](bc04129342))
* codeowners
([c4d7314](c4d731401c))
* coderabbit suggestion
([3cc3f27](3cc3f27dae))
* configure PM2 on startup
([b73623e](b73623e72a))
* contributing guide
([cc18239](cc18239748))
* convert to pnpm monorepo
([#1137](https://github.com/unraid/api/issues/1137))
([ad6b658](ad6b6589db))
* copy only needed files for nodejs
([cf08627](cf08627725))
* create key cli command logic and add to index command list
([796cb09](796cb09c61))
* csv validation
([89d756e](89d756ef4e))
* default value for option
([632775e](632775e435))
* delete unused imports
([0d6a003](0d6a0035aa))
* disable button on submit
([0da77d7](0da77d7119))
* disable casbin logging
([aa1ef1b](aa1ef1bd4c))
* do not move upgradepkg
([c12d8da](c12d8dae4e))
* docstrings
([935318d](935318dda6))
* dont pass entire server state for privacy
([b969f3a](b969f3a9ab))
* download fixtures from the web
([05f661e](05f661e0e5))
* download nodejs and install on legacy OS versions
([b1a2ba7](b1a2ba78cc))
* eliminate all alpha beta gamma variable usage
([4eda099](4eda0991d6))
* enable PR releases on non-mainline merges
([3419837](3419837eb5))
* enable sandbox in dev mode
([21208bf](21208bfcf6))
* enable sandbox with developer command
([9c5e418](9c5e418872))
* enable token sign in with comma separated subs in myservers.config
([e9bd18a](e9bd18a409))
* error state outside of button
([a1cf441](a1cf44162a))
* error when nodejs download fails
([af1994c](af1994cb62))
* exit cli after running command
([5ca225f](5ca225fe7a))
* extensive file checking
([4d45caf](4d45caf258))
* extract node to usr/local/
([9a0d63d](9a0d63d4ee))
* fallback to local
([36d8399](36d8399045))
* faster failure logic
([1f5c642](1f5c6424c7))
* feature request template
([0c0a63b](0c0a63b525))
* fix docusaurus build + update snapshot
([7a19c93](7a19c9331f))
* fix missing flash line
([5f1a61d](5f1a61d4aa))
* fix pm2 setup and add link command
([caf797c](caf797cf4a))
* force linting on build
([ad32cff](ad32cffd75))
* generate key one time
([1435155](143515560c))
* glob for files
([0652114](065211413d))
* group renovate updates
([d7b138b](d7b138b2a7))
* hide sign in from the dropdown text
([ea6ae83](ea6ae83919))
* hypervisor async imports
([f1e5383](f1e53831c8))
* ignore generated code
([0e9c91a](0e9c91af86))
* ignore nuxt-custom-elements and reflect-metadata
([8590a49](8590a49402))
* improve packing
([3c61a61](3c61a615f0))
* initial patcher implementation using the diff tool
([805bc5b](805bc5bfc0))
* initial setup of permissions on keys
([#1068](https://github.com/unraid/api/issues/1068))
([a554bde](a554bde5c2))
* initial version of modification service
([bb37140](bb37140d40))
* inject after form
([e5d1146](e5d1146613))
* kill timeout extended
([0c6f44d](0c6f44da35))
* log size and only tar files
([a6f6706](a6f67060b4))
* logrotate test
([5b0971e](5b0971ea8d))
* lots of progress on colors
([c6547a5](c6547a51fc))
* major release-please workflow improvements
([#1160](https://github.com/unraid/api/issues/1160))
([013cc1d](013cc1de7d))
* manually install libvirt in build process to ensure it is included in
the final build
([cea11da](cea11daf15))
* more pm2 fixes
([4655d72](4655d72fbb))
* move fixtures into __test__ folder
([dfb006e](dfb006e696))
* move ssoenabled to a boolean flag rather than ids
([6f5edb2](6f5edb2406))
* move variable declarations to theme.ts
([00b8ffe](00b8ffe87d))
* myservers_fb keepalive location
([69441d8](69441d890e))
* name package with PR number
([cf72c8b](cf72c8b359))
* nuxt config simplification and formatting
([2903542](29035429bd))
* only write config when a specific config update action occurs
([29ca582](29ca5829ff))
* or button on sign in page
([11ff890](11ff890bcc))
* **plugin:** rm Date & Time format settings from Notification Settings
([acba0b0](acba0b0365))
* properly read log level from environment
([8a374b5](8a374b5b27))
* public index
([8cbb3c4](8cbb3c4718))
* remove apiKey from server
([895d585](895d5857f9))
* remove nghttp3 and only bundle nodejs
([bb555f8](bb555f8296))
* remove sso if disabled on Unraid-API start
([daf904b](daf904bc1b))
* remove sso user command
([f302924](f30292484d))
* remove sso user options
([75d7e08](75d7e08824))
* remove unused config sections
([03e336b](03e336b72f))
* remove unused fields
([2d3892d](2d3892deb8))
* remove unused vars
([6f9977e](6f9977eea0))
* rename api key resource back to api_key
([8827483](8827483699))
* rename modification file
([5d909a8](5d909a856b))
* reorder index
([a4b3f8c](a4b3f8c6c3))
* responsive notifications
([cead975](cead97560c))
* restart the API when an SSO user is added
([dae5738](dae57389c6))
* restoring sso error
([3042ffa](3042ffa37e))
* revert local api key value
([6bfd8a2](6bfd8a2687))
* rollback if patch exists before applying
([a12181a](a12181a5e0))
* secondary changes
([cbb42dc](cbb42dc85e))
* separate install process
([9bbab0f](9bbab0f86c))
* service tests for modifier service
([d6fa35c](d6fa35cdee))
* session issues
([8026ef5](8026ef53e8))
* set background color on webcomponents
([7ef3286](7ef3286191))
* shared call to createPatch
([073a515](073a51572a))
* sidebar notification count
([a4e2a77](a4e2a77410))
* simplify docs
([1e4a4f0](1e4a4f0745))
* sso button token exchange
([3abf20b](3abf20b347))
* sso login boolean
([81f051e](81f051e02c))
* sso testing page and form disable on submit
([09f7415](09f741557b))
* state using crypto
([3734730](3734730bf7))
* style improvements
([a8211ce](a8211cef7d))
* swap to async exit hook
([c7d4e39](c7d4e39287))
* switch to nest-commander
([7ceac1b](7ceac1b184))
* try catch restart
([55100da](55100daed4))
* **ui:** webgui-compatible web component library
([#1075](https://github.com/unraid/api/issues/1075))
([61ee689](61ee689658))
* unnecessary comment
([f560df0](f560df0270))
* unraid single sign on with account app
([2b25537](2b25537e26))
* unraid ui component library
([#976](https://github.com/unraid/api/issues/976))
([91de6e6](91de6e6c1e))
* update based on review feedback
([16f00a0](16f00a0d8c))
* update packageManager field for pnpm
([eec9785](eec9785ba1))
* Update
plugin/source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/include/state.php
([336478c](336478c2e0))
* upgrade dependencies
([46c82ec](46c82ecae3))
* upgrade workflow and auto-assign reviewers
([59e48ad](59e48ad85c))
* use execa for start and stop
([05e77a4](05e77a4bc6))
* use plugin file for install and uninstall
([bbf2807](bbf28075c6))
* use state passing to validate requests
([bd58490](bd584902e0))
* use text-secondary-foreground instead of gray
([7828ef2](7828ef2648))
* use zod to parse config
([02c197f](02c197f244))
* validate entries correctly
([a39da15](a39da15be4))
* validate token format in both PHP and CLI
([b9d9105](b9d9105e3e))
* viewport watch refactor
([9d2405b](9d2405bd21))
* warning on missing fields
([c1fe95f](c1fe95fcb6))
* **web:** activation modal steps, updated copy
([#1079](https://github.com/unraid/api/issues/1079))
([d8a5b17](d8a5b1711a))
* **web:** add an 'all' option to notification filter
([939d7a3](939d7a304d))
* **web:** add confirmation before archiving or deleting all
notifications
([4c663dc](4c663dc69c))
* **web:** add count labels to notification tabs
([78ec466](78ec4663cc))
* **web:** add delete all notifications button to archive view in
notifications sidebar
([89eb841](89eb841b20))
* **web:** add link to settings in notification sidebar
([7296195](7296195495))
* **web:** add loading and error states to notification sidebar
([060fb91](060fb91546))
* **web:** clear notifications indicator after opening sidebar
([be7135e](be7135efdd))
* **web:** enhance notifications indicator in UPC
([#950](https://github.com/unraid/api/issues/950))
([0b469f5](0b469f5b3f))
* **web:** improve notification count syncing
([#1148](https://github.com/unraid/api/issues/1148))
([7588e0e](7588e0e3cf))
* **web:** move notification indicator icons to top-right of bell icon
([99704a9](99704a9dbb))
* **web:** open official release notes via header os version
([7dcf947](7dcf947527))
* **web:** pull date format from display/date and time settings
([7c8e8a0](7c8e8a0e53))
* **web:** remove notification indicator pulse
([bc4708f](bc4708f405))
* **web:** rm api-key validation from connect sign in
([#986](https://github.com/unraid/api/issues/986))
([939383e](939383e4ef))
* **web:** rm old notification bell upon plugin installation
([#979](https://github.com/unraid/api/issues/979))
([478254e](478254e134))
* **web:** support markdown in notification messages
([abcaa5a](abcaa5aedb))
* **web:** use Markdown helper class to interact with markdown
([2f4ff21](2f4ff21986))
* work intent
([c519ba2](c519ba28e4))
* work intent process
([8374af8](8374af8ee8))
* zod config no longer any
([6faef27](6faef27d7c))


### Bug Fixes

* 12 hour timestamp logic corrected
([6cbb9c0](6cbb9c07e4))
* add another missing symlink
([477c113](477c113ce1))
* allow concurrent testing with a shared patcher instance
([c007898](c00789865c))
* **api:** append time to formatted date when a custom date format is
selected
([b9cd8c4](b9cd8c426d))
* **api:** change log output location for diagnostic compatibility
([#1130](https://github.com/unraid/api/issues/1130))
([9bc8060](9bc8060a83))
* **api:** delay pm2 start until server has booted
([3c27b51](3c27b51ab8))
* **api:** exclude duplicates from legacy script in archive retrieval
([9c38fa6](9c38fa6a9c))
* **api:** improve defaults in PM2 service
([#1116](https://github.com/unraid/api/issues/1116))
([a21f39d](a21f39d617))
* **api:** logrotate modification & permissions
([#1145](https://github.com/unraid/api/issues/1145))
([b970fd9](b970fd9e6c))
* **api:** make cookie recognition during websocket connection more
([2a82ea4](2a82ea4765))
* **api:** pm2 start script & limit auto restarts
([#1040](https://github.com/unraid/api/issues/1040))
([b53bb3f](b53bb3f197))
* **api:** retry mothership connection up to 3x before logout
([#1069](https://github.com/unraid/api/issues/1069))
([c163998](c163998175))
* **api:** sanitize incoming user session id's
([3b2d61e](3b2d61efc2))
* **api:** slow init of unraid-api cli
([#1022](https://github.com/unraid/api/issues/1022))
([f37dda1](f37dda16c2))
* **api:** update deploy-dev script to dist instead of src
([2327b00](2327b00d30))
* **api:** validate cookie session data
([fe98295](fe98295496))
* apply and rollback error handling
([76711be](76711be3e8))
* authorization type error
([#987](https://github.com/unraid/api/issues/987))
([5f0446f](5f0446fa79))
* back to default configs
([a1a046f](a1a046f900))
* backup restore formatting
([0cfdd5a](0cfdd5a61b))
* basic test fixed
([bddda82](bddda823e1))
* better js file handling
([bb92c3f](bb92c3f9f8))
* better loader functionality and error handling
([a502134](a502134c0a))
* check width before changing viewport
([e2a1f27](e2a1f27b22))
* chown correctly ([#1185](https://github.com/unraid/api/issues/1185))
([46a05eb](46a05eb76d))
* cleaner logs for starting API
([eb1c62d](eb1c62d3d9))
* cleanup commands
([ef82ec5](ef82ec5af5))
* clearer error messaging
([f8393ee](f8393eeebe))
* code review feedback
([e7b689c](e7b689c546))
* completion script registration
([e338eb9](e338eb9788))
* connect breaks default css of header
([#1155](https://github.com/unraid/api/issues/1155))
([fb24723](fb2472399a))
* connect key role
([eff6c32](eff6c32ccd))
* create api key for connect on startup
([69cd92f](69cd92f974))
* create api key permissions
([14fe30e](14fe30e925))
* create connect key
([d88b1e9](d88b1e9660))
* create PR ignored
([dabe334](dabe334072))
* create releases as drafts
([5483e9f](5483e9fee9))
* cwd on ecosystem.config.json
([3fc4148](3fc41480a2))
* dark theme as array
([77558a5](77558a5cd9))
* default overwrite false test
([62824ba](62824ba76f))
* delete .original files
([547ae18](547ae180dd))
* delete unused line
([3e8c101](3e8c101edd))
* deprecated version warning
([a892a3c](a892a3ce35))
* **deps:** update all non-major dependencies
([#1158](https://github.com/unraid/api/issues/1158))
([48df88f](48df88f5c1))
* **deps:** update all non-major dependencies
([#1168](https://github.com/unraid/api/issues/1168))
([248d211](248d211050))
* **deps:** update apollo graphql packages
([1f9e282](1f9e282880))
* **deps:** update dependency @apollo/client to v3.12.6
([c0d3cf5](c0d3cf5782))
* **deps:** update dependency @apollo/client to v3.12.6
([91a9949](91a9949a5c))
* **deps:** update dependency @apollo/client to v3.12.9
([5b14be6](5b14be6b0f))
* **deps:** update dependency @floating-ui/dom to v1.6.13
([64d3765](64d3765a9a))
* **deps:** update dependency @floating-ui/dom to v1.6.13
([5dc1375](5dc13755df))
* **deps:** update dependency @floating-ui/vue to v1.1.6
([6cb28d5](6cb28d5f8f))
* **deps:** update dependency @floating-ui/vue to v1.1.6
([e5e1c43](e5e1c43bb3))
* **deps:** update dependency @graphql-tools/load-files to v7.0.1
([5f597f9](5f597f9d4c))
* **deps:** update dependency @nestjs/schedule to v4.1.2
([806bd63](806bd633ac))
* **deps:** update dependency chokidar to v4.0.3
([74b3e29](74b3e29c74))
* **deps:** update dependency dockerode to v4
([#830](https://github.com/unraid/api/issues/830))
([c311a89](c311a89aee))
* **deps:** update dependency dotenv to v16.4.7
([b32f84b](b32f84b105))
* **deps:** update dependency execa to v9.5.2
([6c54fa1](6c54fa14b1))
* **deps:** update dependency express to v4.21.2
([a947ff1](a947ff14fa))
* **deps:** update dependency focus-trap to v7.6.4
([8475204](84752043e5))
* **deps:** update dependency focus-trap to v7.6.4
([5dfd6d5](5dfd6d5ded))
* **deps:** update dependency got to v14.4.5
([71e2b70](71e2b70678))
* **deps:** update dependency graphql-ws to v5.16.2
([c112f19](c112f19c95))
* **deps:** update dependency graphql-ws to v5.16.2
([4daa54c](4daa54cfb5))
* **deps:** update dependency ini to v4.1.3
([c817cc4](c817cc4b7e))
* **deps:** update dependency node-window-polyfill to v1.0.4
([61ec04c](61ec04cb87))
* **deps:** update dependency openid-client to v6.1.7
([7ef3729](7ef3729769))
* **deps:** update dependency p-retry to v6.2.1
([46a368e](46a368e1b5))
* **deps:** update dependency pm2 to v5.4.3
([e366cad](e366cad0a4))
* **deps:** update dependency radix-vue to v1.9.12
([83344e0](83344e05c1))
* **deps:** update dependency radix-vue to v1.9.13
([c180728](c180728696))
* **deps:** update dependency uuid to v11.0.5
([0331e24](0331e24a74))
* **deps:** update graphql-tools monorepo
([344b023](344b023503))
* **deps:** update graphqlcodegenerator monorepo
([2bc9af2](2bc9af2578))
* **deps:** update graphqlcodegenerator monorepo
([8675653](8675653e4e))
* **deps:** update nest monorepo to v10.4.15
([2b597f9](2b597f9f02))
* **deps:** update nest-graphql monorepo to v12.2.2
([bd31e09](bd31e09bcf))
* dev mode
([aae38e3](aae38e3404))
* do not process.exit on restart or stop command
([e16763b](e16763b49b))
* docs creation workflow
([13b501a](13b501a342))
* don't check code for execa
([f62f0d3](f62f0d3a0f))
* don't specify pnpm version in install
([30ba5be](30ba5befdb))
* dont remove login file without a backup presetn
([1854aa9](1854aa9f28))
* downgrade marked to fix changelog preview issue
([943c907](943c907d03))
* edit settings padding issue
([4e9ab64](4e9ab645e6))
* empty manifest and version alignment
([b07828d](b07828d655))
* ensure directory exists before making connect key
([a6cd74d](a6cd74dc5c))
* excess spacing in api-key.service
([286ffc5](286ffc54e5))
* extra log line
([b56b215](b56b2157fa))
* extra spacing in config.ts
([84f4f67](84f4f67ce1))
* file modification service fixes
([e4ebfc8](e4ebfc8a13))
* finalize workflow fixes
([616be93](616be93be9))
* find by key, not ID
([124fb61](124fb610b1))
* fix libvirt bindings
([#1167](https://github.com/unraid/api/issues/1167))
([024719f](024719fa7a))
* format authrequest mod as other files
([8b75d6c](8b75d6cc99))
* formatting issue
([0042f14](0042f14ab3))
* further resolve sso sub ids issues
([b3551a1](b3551a1b69))
* improve typing and format lookup
([dfa27e2](dfa27e2c0d))
* initial feedback about report addressed
([060a199](060a1992c4))
* install as-integrations/fastify
([2fce2e9](2fce2e9a28))
* install syntax error
([a355a64](a355a64136))
* integration of `unraid-ui` tailwind config in `web`
([#1074](https://github.com/unraid/api/issues/1074))
([3acc0dc](3acc0dc9c0))
* length
([8481c9a](8481c9a9fb))
* lint
([133c8e0](133c8e0d70))
* lint
([42610d2](42610d290d))
* lint
([b1a993a](b1a993a8e9))
* lint
([6beafbe](6beafbe8ed))
* lint
([d38f3ef](d38f3ef49b))
* logrotate error
([7a009b6](7a009b6be7))
* lowercase or
([29a8689](29a8689ad8))
* main.yml release issue
([2b1e307](2b1e3076b0))
* make public not a part of folder structure in PR
([84611d7](84611d7691))
* marked single input
([d28fb24](d28fb24d68))
* missing server type
([76cf6f3](76cf6f35dc))
* mock ensureDirSync
([14abc13](14abc13cc8))
* more color work
([9a869a4](9a869a49e3))
* more generic test
([ddfc36f](ddfc36fd73))
* more verbose logging for node install to find issues
([c3f4cf5](c3f4cf53c1))
* oauth2 api prefix
([56cfa84](56cfa84794))
* only instantiate service one time
([b1b93e2](b1b93e2783))
* only run release if releases_create == 'true'
([00a444f](00a444fb92))
* only toast unread notifications, not archived ones
([8251c6f](8251c6f2d3))
* padding and glob function issues
([ae753d6](ae753d6bea))
* pass ssoSubIds only
([76a9ae9](76a9ae9386))
* pass token to password field
([9279931](92799312c9))
* patch-utils unused
([1d5c2c8](1d5c2c8338))
* paths now correct, better download logic
([9e12407](9e12407565))
* PHP Warning in state.php
([#1126](https://github.com/unraid/api/issues/1126))
([59d6c1b](59d6c1b678))
* properly log error with template string
([2ad612c](2ad612cef8))
* pull token from query not params
([1756cc5](1756cc5b4b))
* re-add manifest
([e721299](e72129953e))
* re-add type-check
([0fa41f5](0fa41f5690))
* recreate package-lock to fix issues
([e1515a1](e1515a118a))
* release-please upload single draft
([db134f0](db134f091d))
* remove console log
([d8f9f03](d8f9f03146))
* remove devDependencies from output package json
([d847815](d8478152e9))
* remove extra space
([000692c](000692ca50))
* remove isNaN in favor of number.isNaN
([e33c758](e33c7583f7))
* remove line from or in button
([961bcc5](961bcc5db6))
* remove memory key generation
([e58410b](e58410bd57))
* remove unused constructor
([ce92cb0](ce92cb06b7))
* remove unused date-fns
([0c1b89f](0c1b89ff41))
* remove unused login entries
([942b143](942b143fba))
* remove usage of Role.UPC
([ceac626](ceac6269b3))
* render function fixed
([833a99f](833a99fe18))
* report issues + pm2 issues
([4b3d6a7](4b3d6a7ba3))
* reset config to be closer to default
([d844903](d844903d78))
* resource busy when removing all subdirectories
([7b3834c](7b3834ca1f))
* restart command elegant
([b924954](b9249544fc))
* restore upgradepkg before install
([8f58145](8f5814589e))
* revert changelog
([efa7db3](efa7db3db6))
* revert changes to indicator.vue
([11ce9e2](11ce9e2644))
* revert config
([7957c2a](7957c2a681))
* revert dockerode upgrade
([#1140](https://github.com/unraid/api/issues/1140))
([2b163b3](2b163b361a))
* revert myservers.cfg
([7e5dd07](7e5dd07d4a))
* sandbox defaults in dev mode wrong
([d26ddef](d26ddef33e))
* sequential test execution for generic-modification
([9d1442b](9d1442b2ee))
* shell path to unraid-api
([44d3d93](44d3d939a7))
* shorten work intent form
([5b2403a](5b2403ad04))
* simplify api setup index
([5f29e6d](5f29e6d5e7))
* simplify upcoming features
([608151d](608151d84c))
* small modal window
([#1183](https://github.com/unraid/api/issues/1183))
([08423b8](08423b8dae))
* staging build issues
([63fcde8](63fcde8243))
* start command simplification
([27049d9](27049d9d91))
* stop command exits
([58f65ea](58f65eabba))
* storybook resolution issue
([#1153](https://github.com/unraid/api/issues/1153))
([5a3e8df](5a3e8df003))
* strip components from tar line
([bad7f71](bad7f71fea))
* swap to placeholder key
([39612cd](39612cd978))
* switch to useToggle
([5f8602b](5f8602b864))
* test issues
([4d8f2dd](4d8f2ddac6))
* test simplification to ensure no redownloads
([5347d54](5347d54b11))
* tests
([ed18945](ed18945088))
* tests and validate token clears screen
([6c46f94](6c46f9413f))
* theme store now uses singular variables object
([116efe6](116efe6f72))
* thorw on invalid token body
([1e6fb7e](1e6fb7e3e3))
* type error on element render
([45327ce](45327ce01d))
* type for generic test
([0163acb](0163acb7f3))
* unit test issues
([74b9fd0](74b9fd0159))
* unit tests updated
([0ab40fe](0ab40fefda))
* unneeded await on api-key service
([923e929](923e929878))
* unused imports
([0cb0fc9](0cb0fc9881))
* upc header text color
([d23a389](d23a38960b))
* Update renovate.json
([c47a655](c47a655b45))
* update tests
([b1ac0f9](b1ac0f9c83))
* upgradepkg
([6962cdd](6962cdd214))
* upload to correct tag directory on build
([f76c0f0](f76c0f05fb))
* upload to release by name
([2283e06](2283e064d5))
* use an enum and defaults for sandbox value
([2108ed0](2108ed0ecd))
* use batchProcess
([3c357e7](3c357e7e95))
* use cwd when running application
([e27776d](e27776df3d))
* use foreground text color for UPC
([d5f5921](d5f5921534))
* use placeholder in test API key
([5d72b5a](5d72b5a970))
* watch all events to load keys
([ff63535](ff63535b00))
* **web:** broken modals
([19208e5](19208e5fab))
* **web:** display error message in sidebar when api is offline
([#984](https://github.com/unraid/api/issues/984))
([4a29fc9](4a29fc9dda))
* **web:** edge case where archived notifications don't appear
([e40a9eb](e40a9ebecd))
* **web:** env var typo
([dffbfc2](dffbfc2dab))
* **web:** escaping html-encoded symbols like apostrophes in
translations ([#1002](https://github.com/unraid/api/issues/1002))
([4ee42a6](4ee42a6cf6))
* **web:** flash of disconnected api state on page load
([d0819b8](d0819b8d02))
* **web:** infinite scroll loop when there's only 1 page of
notifications
([eeb3289](eeb3289ae8))
* **web:** infinite trigger at bottom of infinite scroll
([001be86](001be86181))
* **web:** name of toaster component
([93980f9](93980f929d))
* **web:** notification styles & alignment
([#968](https://github.com/unraid/api/issues/968))
([547b75a](547b75a55e))
* **web:** refetch notifications for sidebar when new notifications
arrive
([23b1f1a](23b1f1ac73))
* **web:** remove warn and error console log removal
([#1086](https://github.com/unraid/api/issues/1086))
([e7d15ee](e7d15ee5ec))
* **web:** replaces dompurify with isomorphic-dompurify to enable
server-side usage with same syntax
([2724485](2724485989))
* **web:** reset infinite scroll when notification filters change
([3fe13d5](3fe13d5235))
* **web:** sanitize changelog markup after parsing
([83e00c6](83e00c640a))
* **web:** stop opening notification sidebar to archive tab
([ecfc797](ecfc797e7d))
* **web:** theme header differences
([#1085](https://github.com/unraid/api/issues/1085))
([1ecac5e](1ecac5ee4e))
* **web:** track 'notification seen' state across tabs & page loads
([#1121](https://github.com/unraid/api/issues/1121))
([321703e](321703e907))
* **web:** update unread total immediately upon archiving
([#982](https://github.com/unraid/api/issues/982))
([29d9371](29d9371cc3))


### Miscellaneous Chores

* release 4.1.2
([2323ee6](2323ee6838))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-21 15:35:35 -05:00
Eli Bosley
5483e9fee9 fix: create releases as drafts 2025-02-21 15:30:28 -05:00
Eli Bosley
7957c2a681 fix: revert config 2025-02-21 15:30:13 -05:00
Eli Bosley
d47bc0277d Revert "chore: update release-please config, allow releases from main.yml (#1177)"
This reverts commit 6adb4484c3.
2025-02-21 15:29:41 -05:00
github-actions[bot]
950bee951e chore(main): release 4.1.3 (#1178)
# Hotfix Release Feb 21, 2025

### Bug Fixes

* fix ssh issues
* fix issues with uninstalling the plugin
2025-02-21 15:17:46 -05:00
Eli Bosley
46a05eb76d fix: chown correctly (#1185)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **Chores**
- Updated the approach to managing directory ownership for improved
consistency across various environments.
- Enhanced error handling in directory permission and ownership
commands.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-21 15:14:15 -05:00
Michael Datelle
08423b8dae fix: small modal window (#1183)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Style**
- Adjusted the modal’s width during transitions for a consistent
full-width display.
- Refined responsive behavior for improved modal display on smaller
screens.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: mdatelle <mike@datelle.net>
2025-02-21 14:12:48 -05:00
Eli Bosley
364eb62726 fix/plugin-always-restores (#1184)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced the plugin uninstallation process to ensure that system files
are properly restored during removal. This update uses a temporary flag
to trigger restoration only when needed and cleans up afterward,
ensuring a smooth and reliable uninstallation experience.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-21 14:12:21 -05:00
Pujit Mehrotra
1718af1bb6 Revert "chore(web): prepare package.json and env files for monorepo tooling" (#1182)
Reverts unraid/api#1180

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced the repository setup process by separating configuration for
backend and website modules.
- Introduced a new web setup routine that automates environment
initialization and dependency installation.
- Expanded the development workflow with commands for live development,
linting, type checking, and code generation.

- **Chores**
- Reorganized project scripts and dependency management for improved
consistency.
- Streamlined cleanup routines and refined configuration settings for
staging environments.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-21 13:57:37 -05:00
Pujit Mehrotra
a50a2d9aeb chore(web): prepare package.json and env files for monorepo tooling (#1180)
- **Chores**
- Streamlined the installation and setup workflow by consolidating
multiple commands into a simpler process.
- Updated cleaning procedures to ensure complete removal of build
artifacts and dependencies.
- Adjusted environment file handling for clearer configuration
management.
2025-02-21 11:48:51 -05:00
renovate[bot]
248d211050 fix(deps): update all non-major dependencies (#1168)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[@graphql-tools/merge](https://redirect.github.com/ardatan/graphql-tools)
([source](https://redirect.github.com/ardatan/graphql-tools/tree/HEAD/packages/merge))
| [`9.0.19` ->
`9.0.20`](https://renovatebot.com/diffs/npm/@graphql-tools%2fmerge/9.0.19/9.0.20)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-tools%2fmerge/9.0.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-tools%2fmerge/9.0.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-tools%2fmerge/9.0.19/9.0.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-tools%2fmerge/9.0.19/9.0.20?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@graphql-tools/schema](https://redirect.github.com/ardatan/graphql-tools)
([source](https://redirect.github.com/ardatan/graphql-tools/tree/HEAD/packages/schema))
| [`10.0.18` ->
`10.0.19`](https://renovatebot.com/diffs/npm/@graphql-tools%2fschema/10.0.18/10.0.19)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-tools%2fschema/10.0.19?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-tools%2fschema/10.0.19?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-tools%2fschema/10.0.18/10.0.19?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-tools%2fschema/10.0.18/10.0.19?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[@graphql-tools/utils](https://redirect.github.com/ardatan/graphql-tools)
([source](https://redirect.github.com/ardatan/graphql-tools/tree/HEAD/packages/utils))
| [`10.8.1` ->
`10.8.2`](https://renovatebot.com/diffs/npm/@graphql-tools%2futils/10.8.1/10.8.2)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-tools%2futils/10.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-tools%2futils/10.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-tools%2futils/10.8.1/10.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-tools%2futils/10.8.1/10.8.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [ws](https://redirect.github.com/websockets/ws) | [`8.18.0` ->
`8.18.1`](https://renovatebot.com/diffs/npm/ws/8.18.0/8.18.1) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/ws/8.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/ws/8.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/ws/8.18.0/8.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/ws/8.18.0/8.18.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>ardatan/graphql-tools (@&#8203;graphql-tools/merge)</summary>

###
[`v9.0.20`](https://redirect.github.com/ardatan/graphql-tools/blob/HEAD/packages/merge/CHANGELOG.md#9020)

[Compare
Source](https://redirect.github.com/ardatan/graphql-tools/compare/@graphql-tools/merge@9.0.19...@graphql-tools/merge@9.0.20)

##### Patch Changes

-   Updated dependencies

\[[`3547bba`](3547bbadd3)]:
-
[@&#8203;graphql-tools/utils](https://redirect.github.com/graphql-tools/utils)[@&#8203;10](https://redirect.github.com/10).8.2

</details>

<details>
<summary>ardatan/graphql-tools (@&#8203;graphql-tools/schema)</summary>

###
[`v10.0.19`](https://redirect.github.com/ardatan/graphql-tools/blob/HEAD/packages/schema/CHANGELOG.md#10019)

[Compare
Source](https://redirect.github.com/ardatan/graphql-tools/compare/@graphql-tools/schema@10.0.18...@graphql-tools/schema@10.0.19)

##### Patch Changes

-   Updated dependencies

\[[`3547bba`](3547bbadd3)]:
-
[@&#8203;graphql-tools/utils](https://redirect.github.com/graphql-tools/utils)[@&#8203;10](https://redirect.github.com/10).8.2
-
[@&#8203;graphql-tools/merge](https://redirect.github.com/graphql-tools/merge)[@&#8203;9](https://redirect.github.com/9).0.20

</details>

<details>
<summary>ardatan/graphql-tools (@&#8203;graphql-tools/utils)</summary>

###
[`v10.8.2`](https://redirect.github.com/ardatan/graphql-tools/blob/HEAD/packages/utils/CHANGELOG.md#1082)

[Compare
Source](https://redirect.github.com/ardatan/graphql-tools/compare/@graphql-tools/utils@10.8.1...@graphql-tools/utils@10.8.2)

##### Patch Changes

-
[`3547bba`](3547bbadd3)
Thanks [@&#8203;ardatan](https://redirect.github.com/ardatan)! - Relax
`extensions` type

</details>

<details>
<summary>websockets/ws (ws)</summary>

###
[`v8.18.1`](https://redirect.github.com/websockets/ws/compare/8.18.0...8.18.1)

[Compare
Source](https://redirect.github.com/websockets/ws/compare/8.18.0...8.18.1)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-21 10:24:22 -05:00
Eli Bosley
6adb4484c3 chore: update release-please config, allow releases from main.yml (#1177)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Enhanced the automated release process with integrated changelog
updates for better tracking of product changes.
- Expanded deployment support by distributing release assets through
additional cloud providers, ensuring more robust delivery.

- **Chores**
- Refined release configurations and streamlined component management
for a smoother rollout.
- Introduced file verification checks to prevent release interruptions
and maintain reliable updates.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-21 10:17:23 -05:00
renovate[bot]
dc2e02de86 chore(deps): update dependency vue-tsc to v2 (#1176)
This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [vue-tsc](https://redirect.github.com/vuejs/language-tools)
([source](https://redirect.github.com/vuejs/language-tools/tree/HEAD/packages/tsc))
| [`^1.8.0` ->
`^2.0.0`](https://renovatebot.com/diffs/npm/vue-tsc/1.8.27/2.2.2) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vue-tsc/2.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue-tsc/2.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue-tsc/1.8.27/2.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue-tsc/1.8.27/2.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>vuejs/language-tools (vue-tsc)</summary>

###
[`v2.2.2`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#222-supofficialsup-223-supinsiderssup-2025-02-15)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.2.0...v2.2.2)

##### Features

- feat(language-core): navigation support for `$attrs`, `$slots`,
`$refs` and `$el` in the template
([#&#8203;5056](https://redirect.github.com/vuejs/language-tools/issues/5056))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- feat(language-service): support global directives completion
([#&#8203;4989](https://redirect.github.com/vuejs/language-tools/issues/4989))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- feat(language-core): type support of `useAttrs`
([#&#8203;5106](https://redirect.github.com/vuejs/language-tools/issues/5106))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- feat(language-core): add options for fine-grained configuration of
`strictTemplates`
([#&#8203;5138](https://redirect.github.com/vuejs/language-tools/issues/5138))
- feat(language-service): display deprecated info of props in completion
([#&#8203;5134](https://redirect.github.com/vuejs/language-tools/issues/5134))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- feat(component-meta): collect destructured props defaults
([#&#8203;5101](https://redirect.github.com/vuejs/language-tools/issues/5101))
- Thanks to [@&#8203;Akryum](https://redirect.github.com/Akryum)!
- feat(language-core): add `checkUnknownDirectives` option
([#&#8203;5141](https://redirect.github.com/vuejs/language-tools/issues/5141))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- feat(language-core): support `<script vapor>` - Thanks to
[@&#8203;KazariEX](https://redirect.github.com/KazariEX)!

##### Bug Fixes

- fix(language-core): ignore ts errors in function-scoped declare
expressions
([#&#8203;5090](https://redirect.github.com/vuejs/language-tools/issues/5090))
- Thanks to
[@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)!
- fix(language-core, typescript-plugin): handle self-reference component
correctly
([#&#8203;5102](https://redirect.github.com/vuejs/language-tools/issues/5102))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- fix(language-core): do not generate element for `<template>` with
`v-slot`
([#&#8203;5077](https://redirect.github.com/vuejs/language-tools/issues/5077))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- fix(language-service): set code action kinds to avoid warning
([#&#8203;5096](https://redirect.github.com/vuejs/language-tools/issues/5096))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
-   fix(language-core): handle parentheses in v-for exp
- fix(language-core): slot exp formatting virtual code syntax incorrect
- fix(language-core): arrow function formatting virtual code syntax
incorrect in interpolation
-   fix(language-core): improve multiple lines event formatting result
-   fix(language-core): prefer `loc.source` instead of node content
- fix(language-core): intersect local `$attrs` with `__VLS_ctx.$attrs`
([#&#8203;5113](https://redirect.github.com/vuejs/language-tools/issues/5113))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- fix(language-core): only generate model modifiers for components -
Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- fix(language-plugin-pug): ignore duplicate attribute error of `class`
([#&#8203;5100](https://redirect.github.com/vuejs/language-tools/issues/5100))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- fix(language-core): align types of `v-for` with core
([#&#8203;5084](https://redirect.github.com/vuejs/language-tools/issues/5084))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- fix(language-core): map interpolation error with multiple variables
correctly
([#&#8203;5158](https://redirect.github.com/vuejs/language-tools/issues/5158))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- fix(vscode): ask user to reload extension host when configuration
changes
([#&#8203;5160](https://redirect.github.com/vuejs/language-tools/issues/5160))
- Thanks to
[@&#8203;typed-sigterm](https://redirect.github.com/typed-sigterm)!
- fix(typescript-plugin): update component names correctly for the first
time - Thanks to
[@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- fix(language-core): add `undefined` to first param type of optional
model emits
([#&#8203;5171](https://redirect.github.com/vuejs/language-tools/issues/5171))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- fix(language-core): intersect `__VLS_slots` with `__VLS_ctx.$slots`
([#&#8203;5083](https://redirect.github.com/vuejs/language-tools/issues/5083))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- fix(language-core): complete codegen of slot name prop
([#&#8203;5139](https://redirect.github.com/vuejs/language-tools/issues/5139))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!

##### Other Changes

- refactor(language-service): read ast from codegen instead of parsing
it repeatedly
([#&#8203;5086](https://redirect.github.com/vuejs/language-tools/issues/5086))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- refactor(language-core): rewrite `vueCompilerOptions` resolution logic
- refactor(component-meta): read `scriptSetupRanges` from codegen -
Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- refactor(component-meta): read node directly instead of creating sub
ast - Thanks to
[@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- refactor(component-meta): read ast from `sfc.script` - Thanks to
[@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- refactor(language-core): generate the type of slots with function
property
([#&#8203;5173](https://redirect.github.com/vuejs/language-tools/issues/5173))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- refactor(language-core): reduce codegen size of template returns -
Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- refactor(language-core): remove semantic highlight of directives -
Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- refactor: update alien-signals to 1.0.3
([#&#8203;5181](https://redirect.github.com/vuejs/language-tools/issues/5181))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!

###
[`v2.2.0`](https://redirect.github.com/vuejs/language-tools/compare/v2.1.10...5babca774658d4b9afbe877ac7c8cafdaecf2c3e)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.1.10...v2.2.0)

###
[`v2.1.10`](https://redirect.github.com/vuejs/language-tools/compare/v2.1.8...b0af30caee2f8dfb1a8393c1b400f38e31fa4883)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.1.8...v2.1.10)

###
[`v2.1.8`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#218-supofficialsup-219-supinsiderssup-2024-10-26)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.1.6...v2.1.8)

##### Features

- **vscode:** reactions visualization now identifies more use cases
<sup>Insiders</sup>
- **language-core:** auto infer `$el` type
([#&#8203;4805](https://redirect.github.com/vuejs/language-tools/issues/4805))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** typed directive arg and modifiers
([#&#8203;4813](https://redirect.github.com/vuejs/language-tools/issues/4813))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!

##### Bug Fixes

- **language-core:** avoid generic type loss due to destructured props
([#&#8203;4821](https://redirect.github.com/vuejs/language-tools/issues/4821))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** handle `v-for` with `v-once` correctly
([#&#8203;4830](https://redirect.github.com/vuejs/language-tools/issues/4830))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** avoid generating zero-length mappings for
interpolation edges
- **language-core:** don't assign `this` to `__VLS_ctx`
([#&#8203;4845](https://redirect.github.com/vuejs/language-tools/issues/4845))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-service:** initialize scope with null prototype object
([#&#8203;4855](https://redirect.github.com/vuejs/language-tools/issues/4855))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** inlay hints for `<component :is>` and `<slot
:name>`
([#&#8203;4661](https://redirect.github.com/vuejs/language-tools/issues/4661))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX),
[@&#8203;so1ve](https://redirect.github.com/so1ve)!
- **language-core:** should error when invalid syntax at script end
([#&#8203;4692](https://redirect.github.com/vuejs/language-tools/issues/4692))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** correct type inference of `defineModel` &
`defineEmits` in generic
([#&#8203;4823](https://redirect.github.com/vuejs/language-tools/issues/4823))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** inject generics of `useTemplateRef` into correct
location
([#&#8203;4829](https://redirect.github.com/vuejs/language-tools/issues/4829))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** prevent the generation of generics in JS
([#&#8203;4836](https://redirect.github.com/vuejs/language-tools/issues/4836))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX),
[@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)!
- **language-core:** generate correct reference for `v-on` on `<slot>`
([#&#8203;4864](https://redirect.github.com/vuejs/language-tools/issues/4864))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** match classname before `)`
([#&#8203;4887](https://redirect.github.com/vuejs/language-tools/issues/4887))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-service:** handle internal item key with leading slash
correctly
([#&#8203;4894](https://redirect.github.com/vuejs/language-tools/issues/4894))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** correctly obtain the index of style modules
([#&#8203;4907](https://redirect.github.com/vuejs/language-tools/issues/4907))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** refer absolute path of global types file
([#&#8203;4924](https://redirect.github.com/vuejs/language-tools/issues/4924))
- Thanks to
[@&#8203;depressedX](https://redirect.github.com/depressedX)!
- **component-meta:** error when signatures is undefined
([#&#8203;4930](https://redirect.github.com/vuejs/language-tools/issues/4930))
- Thanks to
[@&#8203;Hannesrasmussen](https://redirect.github.com/Hannesrasmussen)!
- **language-core:** intersect props of generic component with attrs
([#&#8203;4886](https://redirect.github.com/vuejs/language-tools/issues/4886))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** fix incorrect syntax for class component virtual
code
- **language-core:** generate `value` instead of model name into tuple
([#&#8203;4892](https://redirect.github.com/vuejs/language-tools/issues/4892))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** infer template ref's type of native elements with
`v-for` correctly
([#&#8203;4933](https://redirect.github.com/vuejs/language-tools/issues/4933))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** should wrap item with `Reactive` on `v-for`
([#&#8203;4902](https://redirect.github.com/vuejs/language-tools/issues/4902))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!

##### Performance

- **language-service:** find destructured props only with enabled
setting
([#&#8203;4815](https://redirect.github.com/vuejs/language-tools/issues/4815))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!

##### Other Changes

-   Upgraded Volar from `v2.4.1` to `v2.4.8`:
- Changing vue files causes internal state to desync in Sublime Text
([#&#8203;4909](https://redirect.github.com/vuejs/language-tools/issues/4909))
- Thanks to [@&#8203;rchl](https://redirect.github.com/rchl)!
- The syntax highlighting is not applied when destructuring props
([#&#8203;4811](https://redirect.github.com/vuejs/language-tools/issues/4811))
- chore: fix nvim config snippet in README
([#&#8203;4881](https://redirect.github.com/vuejs/language-tools/issues/4881))
- Thanks to
[@&#8203;LiamEderzeel](https://redirect.github.com/LiamEderzeel)!
- chore: remove side effects
([#&#8203;4871](https://redirect.github.com/vuejs/language-tools/issues/4871))
- Thanks to [@&#8203;vikingair](https://redirect.github.com/vikingair)!
- chore: remove `importsNotUsedAsValues`
([#&#8203;4897](https://redirect.github.com/vuejs/language-tools/issues/4897))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- chore(vscode): switch to `"module": "CommonJS"`
([#&#8203;4944](https://redirect.github.com/vuejs/language-tools/issues/4944))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- test: fix incorrect default value
([#&#8203;4934](https://redirect.github.com/vuejs/language-tools/issues/4934))
- Thanks to [@&#8203;jh-leong](https://redirect.github.com/jh-leong)!
-   test(tsc): add a test case for class component

###
[`v2.1.6`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#216-supofficialsup-217-supinsiderssup-2024-09-05)

[Compare
Source](a95b51ac0b...v2.1.6)

##### Features

- **language-plugin-pug:** support initial indentation
([#&#8203;4774](https://redirect.github.com/vuejs/language-tools/issues/4774))
- **language-service:** JSDoc display support when typing props on
component template
([#&#8203;4796](https://redirect.github.com/vuejs/language-tools/issues/4796))
- Thanks to [@&#8203;joy-yu](https://redirect.github.com/joy-yu)!
- **language-core:** typed directives in template
([#&#8203;4807](https://redirect.github.com/vuejs/language-tools/issues/4807))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!

##### Bug Fixes

- **language-core:** wrap template refs with `unref` in interpolation
([#&#8203;4777](https://redirect.github.com/vuejs/language-tools/issues/4777))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** ensure to pass tsc on inline global types
([#&#8203;4782](https://redirect.github.com/vuejs/language-tools/issues/4782))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** infer native template ref as build-in element
interface
([#&#8203;4786](https://redirect.github.com/vuejs/language-tools/issues/4786))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** generate `__VLS_StyleModules` after template
([#&#8203;4790](https://redirect.github.com/vuejs/language-tools/issues/4790))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** make `expose` of non-generic template ref required
([#&#8203;4795](https://redirect.github.com/vuejs/language-tools/issues/4795))
- Thanks to
[@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)!
- **language-core:** avoid using `__typeProps` with runtime props
([#&#8203;4800](https://redirect.github.com/vuejs/language-tools/issues/4800))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** ignore unknown attrs error when strictTemplates is
not enabled
([#&#8203;4785](https://redirect.github.com/vuejs/language-tools/issues/4785))
- **language-core:** prevent append globalTypes to virtual file
([#&#8203;4806](https://redirect.github.com/vuejs/language-tools/issues/4806))
- Thanks to
[@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)!
- **language-core:** prevent type error when use defineSlots and
non-template
([#&#8203;4809](https://redirect.github.com/vuejs/language-tools/issues/4809))
- Thanks to
[@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)!
- **typescript-plugin:** disconnect socket on error
([#&#8203;4672](https://redirect.github.com/vuejs/language-tools/issues/4672))

##### Performance

- **language-core:** don't emit event lnlayhint when content is none
([#&#8203;4776](https://redirect.github.com/vuejs/language-tools/issues/4776))
- Thanks to [@&#8203;Gehbt](https://redirect.github.com/Gehbt)!

##### Other Changes

- **language-core:** split `__VLS_templateResult`
([#&#8203;4781](https://redirect.github.com/vuejs/language-tools/issues/4781))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** wrap template virtual code into a function
([#&#8203;4784](https://redirect.github.com/vuejs/language-tools/issues/4784))
- **language-core:** move `templateRef` into `composibles`
([#&#8203;4791](https://redirect.github.com/vuejs/language-tools/issues/4791))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** generate global types for the first parsed Vue
component if cannot write global types file

##### Tests

- **language-server:** add renaming case for template `ref()`
([#&#8203;4794](https://redirect.github.com/vuejs/language-tools/issues/4794))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **tsc:** update to Vue 3.5
([#&#8203;4725](https://redirect.github.com/vuejs/language-tools/issues/4725))
- **tsc:** unknown props on non-strict generic component
([#&#8203;4792](https://redirect.github.com/vuejs/language-tools/issues/4792))

###
[`v2.1.5`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#214-supofficialsup-215-supinsiderssup-2024-09-01)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.1.4...a95b51ac0b0db8825f77fbba37e29932b5be61e4)

##### Features

- **typescript-plugin, language-server:** generate global types file
into `node_modules/.vue-global-types`
([#&#8203;4752](https://redirect.github.com/vuejs/language-tools/issues/4752))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** navigation support for template-ref
([#&#8203;4726](https://redirect.github.com/vuejs/language-tools/issues/4726))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!

##### Bug Fixes

- **language-core, typescript-plugin, language-server:** apply snake
case on globalTypes filename
([#&#8203;4749](https://redirect.github.com/vuejs/language-tools/issues/4749))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** hoist `$refs` type
([#&#8203;4763](https://redirect.github.com/vuejs/language-tools/issues/4763))
- **language-core:** disable lib check on global types file
([#&#8203;4767](https://redirect.github.com/vuejs/language-tools/issues/4767))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** prevent circular reference of templateRef
([#&#8203;4768](https://redirect.github.com/vuejs/language-tools/issues/4768))
- Thanks to
[@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)!
-   **language-core:** using interface merging for `GlobalComponents`
- **language-core:** `fallthroughAttributes` causes global components to
be self-referential
([#&#8203;4761](https://redirect.github.com/vuejs/language-tools/issues/4761))
- **language-core:** auto-completion for the last line of template block
([#&#8203;4771](https://redirect.github.com/vuejs/language-tools/issues/4771))
- Thanks to
[@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)!
- **language-core:** update ast correctly on repeated `v-for`
modifications
([#&#8203;4772](https://redirect.github.com/vuejs/language-tools/issues/4772))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-server:** leaking named pipes
([#&#8203;4672](https://redirect.github.com/vuejs/language-tools/issues/4672))
- **typescript-plugin:** compatible with Yarn PnP
([#&#8203;4751](https://redirect.github.com/vuejs/language-tools/issues/4751))
- **vscode:** whitelist `ms-dynamics-smb.al` extension for Vue Hybrid
Mode.
([#&#8203;4765](https://redirect.github.com/vuejs/language-tools/issues/4765))
- Thanks to
[@&#8203;kyleweishaupt](https://redirect.github.com/kyleweishaupt)!

##### Other Changes

- Add optional "dependencies" textarea to issue template
([#&#8203;4758](https://redirect.github.com/vuejs/language-tools/issues/4758))
- Thanks to
[@&#8203;davidmatter](https://redirect.github.com/davidmatter)!

###
[`v2.1.4`](https://redirect.github.com/vuejs/language-tools/compare/v2.1.2...5e197d08eaef57209ff2927c943ba1db3bf4eff6)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.1.2...v2.1.4)

###
[`v2.1.2`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#212-supofficialsup-213-supinsiderssup-2024-08-29)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.1.0...v2.1.2)

##### Bug Fixes

- **language-core, typescript-plugin, language-server:** write
globalTypes into dist for correct export
([#&#8203;4740](https://redirect.github.com/vuejs/language-tools/issues/4740))
([#&#8203;4737](https://redirect.github.com/vuejs/language-tools/issues/4737))
([#&#8203;4738](https://redirect.github.com/vuejs/language-tools/issues/4738))
([#&#8203;4739](https://redirect.github.com/vuejs/language-tools/issues/4739))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** don't default `vueCompilerOptions.lib` to
`@vue/runtime-dom` for Vue 2

###
[`v2.1.0`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#210-supofficialsup-211-supinsiderssup-2024-08-29)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.0.29...v2.1.0)

##### Features

- **language-core:** inlay hints for destructured props
([#&#8203;4634](https://redirect.github.com/vuejs/language-tools/issues/4634))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** typed fallthrough attributes
([#&#8203;4103](https://redirect.github.com/vuejs/language-tools/issues/4103))
- Thanks to [@&#8203;A5rocks](https://redirect.github.com/A5rocks),
[@&#8203;so1ve](https://redirect.github.com/so1ve)!
- **language-core:** document links for classname within `:class`
([#&#8203;4642](https://redirect.github.com/vuejs/language-tools/issues/4642))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** auto infer type for $refs & useTemplateRef
([#&#8203;4644](https://redirect.github.com/vuejs/language-tools/issues/4644))
- Thanks to
[@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)!
- **language-core:** type support for CSS Modules API
([#&#8203;4674](https://redirect.github.com/vuejs/language-tools/issues/4674))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-service:** better completion for directives
([#&#8203;4640](https://redirect.github.com/vuejs/language-tools/issues/4640))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-service:** better sorting & filtering of completion
([#&#8203;4671](https://redirect.github.com/vuejs/language-tools/issues/4671))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-service:** add style scoped and module completion
([#&#8203;4705](https://redirect.github.com/vuejs/language-tools/issues/4705))
- Thanks to [@&#8203;runyasak](https://redirect.github.com/runyasak)!

##### Bug Fixes

- **vscode:** type of `vue.server.hybridMode` config
([#&#8203;4703](https://redirect.github.com/vuejs/language-tools/issues/4703))
- Thanks to [@&#8203;KermanX](https://redirect.github.com/KermanX)!
- **language-core:** dependency on vulnerable version of
`vue-template-compiler`
([#&#8203;4613](https://redirect.github.com/vuejs/language-tools/issues/4613))
- Thanks to [@&#8203;yyx990803](https://redirect.github.com/yyx990803)!
- **language-core:** support parse method to access ctx var in object
([#&#8203;4609](https://redirect.github.com/vuejs/language-tools/issues/4609))
- Thanks to [@&#8203;linghaoSu](https://redirect.github.com/linghaoSu)!
- **language-core:** escape \ and ' in className avoid type error
([#&#8203;4619](https://redirect.github.com/vuejs/language-tools/issues/4619))
- Thanks to [@&#8203;linghaoSu](https://redirect.github.com/linghaoSu)!
- **language-core:** semantic highlight of the end tag of namespaced
elements
([#&#8203;4623](https://redirect.github.com/vuejs/language-tools/issues/4623))
- Thanks to [@&#8203;KermanX](https://redirect.github.com/KermanX)!
- **language-core:** nullable modelvalues
([#&#8203;4648](https://redirect.github.com/vuejs/language-tools/issues/4648))
- Thanks to
[@&#8203;davidmatter](https://redirect.github.com/davidmatter)!
- **language-core:** should try casting dynamic slot name into constant
([#&#8203;4669](https://redirect.github.com/vuejs/language-tools/issues/4669))
- Thanks to [@&#8203;KermanX](https://redirect.github.com/KermanX)!
- **language-core:** local name support for prop using runtime api
([#&#8203;4650](https://redirect.github.com/vuejs/language-tools/issues/4650))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** optimize matching of scoped class and `v-bind()`
([#&#8203;4679](https://redirect.github.com/vuejs/language-tools/issues/4679))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** should preserve generic info in directive
([#&#8203;4686](https://redirect.github.com/vuejs/language-tools/issues/4686))
- Thanks to [@&#8203;KermanX](https://redirect.github.com/KermanX)!
- **language-core:** generate `ref` as identifier instead of
interpolation
([#&#8203;4688](https://redirect.github.com/vuejs/language-tools/issues/4688))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** correct type narrowing from script to template
([#&#8203;4689](https://redirect.github.com/vuejs/language-tools/issues/4689))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** should camelize prop name in
`experimentalModelPropName`
([#&#8203;4691](https://redirect.github.com/vuejs/language-tools/issues/4691))
- Thanks to [@&#8203;KermanX](https://redirect.github.com/KermanX)!
- **language-core:** drop duplicate hints on incomplete tag
([#&#8203;4696](https://redirect.github.com/vuejs/language-tools/issues/4696))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** correct inlay hints for v-bind with modifier
([#&#8203;4721](https://redirect.github.com/vuejs/language-tools/issues/4721))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-core:** transform range of `file-md` correctly
([#&#8203;4735](https://redirect.github.com/vuejs/language-tools/issues/4735))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-plugin-pug:** should cache proxyed object
([#&#8203;4626](https://redirect.github.com/vuejs/language-tools/issues/4626))
- Thanks to [@&#8203;KermanX](https://redirect.github.com/KermanX)!
- **language-plugin-pug:** compute offset correctly of pug class
([#&#8203;4652](https://redirect.github.com/vuejs/language-tools/issues/4652))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-service:** completion documentations for binding attributes
([#&#8203;4667](https://redirect.github.com/vuejs/language-tools/issues/4667))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-service:** avoid converting internal id of special tags
([#&#8203;4643](https://redirect.github.com/vuejs/language-tools/issues/4643))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-service:** reinstate the completion for modifiers
([#&#8203;4639](https://redirect.github.com/vuejs/language-tools/issues/4639))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **language-service:** consistent data from provider for sfc completion
([#&#8203;4645](https://redirect.github.com/vuejs/language-tools/issues/4645))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!
- **typescript-plugin:** unknown request type warning
([#&#8203;4715](https://redirect.github.com/vuejs/language-tools/issues/4715))
- Thanks to
[@&#8203;davidmatter](https://redirect.github.com/davidmatter)!

##### Refactors

-   **language-core:** extract SFC root tags to separate virtual code
-   **language-core:** removed `__hint` trick from codegen
-   **language-core:** rewrite a part of confusing codegen code
- **language-core:** reduce virtual code generated by component tags
([#&#8203;4714](https://redirect.github.com/vuejs/language-tools/issues/4714))
- **language-core:** do not wrap template virtual code with function
([#&#8203;4731](https://redirect.github.com/vuejs/language-tools/issues/4731))
- **language-core**: write real files to FS for shared global types
([#&#8203;4736](https://redirect.github.com/vuejs/language-tools/issues/4736))
- **component-meta:** remove deprecated
`createComponentMetaCheckerByJsonConfig`, `createComponentMetaChecker`
api

##### Other Changes

-   Upgraded Volar from `v2.4.0-alpha.18` to `v2.4.1`:
- Ensure unopened files are synced to project
([#&#8203;4711](https://redirect.github.com/vuejs/language-tools/issues/4711))
([#&#8203;4632](https://redirect.github.com/vuejs/language-tools/issues/4632))
- Thanks to
[@&#8203;davidmatter](https://redirect.github.com/davidmatter)!
- **ci:** integrated
[pkg.pr.new](https://redirect.github.com/stackblitz-labs/pkg.pr.new)
- **tsc:** test all typecheck cases in one tsconfig
([#&#8203;4723](https://redirect.github.com/vuejs/language-tools/issues/4723))
- **tsc:** add test for TS-next
([#&#8203;4724](https://redirect.github.com/vuejs/language-tools/issues/4724))
- **tsc:** add tests for for
[#&#8203;3779](https://redirect.github.com/vuejs/language-tools/issues/3779),
[#&#8203;3820](https://redirect.github.com/vuejs/language-tools/issues/3820)
([#&#8203;3838](https://redirect.github.com/vuejs/language-tools/issues/3838))
- Thanks to [@&#8203;so1ve](https://redirect.github.com/so1ve)!
- **vscode:** add grammar test
([#&#8203;3861](https://redirect.github.com/vuejs/language-tools/issues/3861))
- Thanks to [@&#8203;so1ve](https://redirect.github.com/so1ve)!
- **language-service:** migrate tests to `@volar/test-utils`
([#&#8203;4719](https://redirect.github.com/vuejs/language-tools/issues/4719))
- **language-core:** add scoped classes renaming case
([#&#8203;4727](https://redirect.github.com/vuejs/language-tools/issues/4727))
- Thanks to [@&#8203;KazariEX](https://redirect.github.com/KazariEX)!

###
[`v2.0.29`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#2028-supofficialsup-2029-supinsiderssup-2024-07-22)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.0.28...v2.0.29)

##### Features

- **vscode:** focus mode <sup>Insiders</sup>
([https://github.com/volarjs/insiders/pull/24](https://redirect.github.com/volarjs/insiders/pull/24))
-   **language-core:** Plugin API 2.1
    -   Added plugin hooks: `getLanguageId`, `isValidFile`, `parseSFC2`
- Improve backward compatibility
([#&#8203;4585](https://redirect.github.com/vuejs/language-tools/issues/4585))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- **language-core:** support default prop when using \__typeProps
([#&#8203;4602](https://redirect.github.com/vuejs/language-tools/issues/4602))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- **language-core:** improve nested plugins
([#&#8203;4581](https://redirect.github.com/vuejs/language-tools/issues/4581))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- **language-service:** remove `v-bind` code action
([#&#8203;4601](https://redirect.github.com/vuejs/language-tools/issues/4601))
- **vscode:** add empty pattern to codeblock attributes scope
([#&#8203;4590](https://redirect.github.com/vuejs/language-tools/issues/4590))
- Thanks [@&#8203;KermanX](https://redirect.github.com/KermanX)

##### Fixes

- **tsc:** errors should be thrown instead of being console.log printed
- **language-server:** observe named pipes changes when server startup
([#&#8203;4292](https://redirect.github.com/vuejs/language-tools/issues/4292))
- **language-core:** infer define model type from options type
([#&#8203;4545](https://redirect.github.com/vuejs/language-tools/issues/4545))
- Thanks [@&#8203;davidmatter](https://redirect.github.com/davidmatter)
- **language-core:** type-checking not working with hyphen in slot name
with JS
([#&#8203;4478](https://redirect.github.com/vuejs/language-tools/issues/4478))
- Thanks [@&#8203;KermanX](https://redirect.github.com/KermanX)
- **language-core:** add type check for v-model without argument
([#&#8203;4598](https://redirect.github.com/vuejs/language-tools/issues/4598))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- **language-service:** filter special tags
([#&#8203;4596](https://redirect.github.com/vuejs/language-tools/issues/4596))
- Thanks [@&#8203;so1ve](https://redirect.github.com/so1ve)
- **typescript-plugin:** improve named pipes reliability
([#&#8203;4603](https://redirect.github.com/vuejs/language-tools/issues/4603))
- **language-core:** property access is incorrectly identified as
compound expression
([#&#8203;4600](https://redirect.github.com/vuejs/language-tools/issues/4600))
- **language-core:** fix compatibility of generic component virtual code
with TS 5.5
([#&#8203;4577](https://redirect.github.com/vuejs/language-tools/issues/4577))
- **tsc:** TS4082 not reported for functional component
([#&#8203;4569](https://redirect.github.com/vuejs/language-tools/issues/4569))

##### Other Changes

-   Upgraded Volar from `v2.4.0-alpha.15` to `v2.4.0-alpha.18`:
- Fix VS Code IntelliSense will be lost in new created files
([#&#8203;4424](https://redirect.github.com/vuejs/language-tools/issues/4424))
- Add workspace symbols support in Hybrid Mode
([#&#8203;4595](https://redirect.github.com/vuejs/language-tools/issues/4595))
- Add workspace `addMissingImports` action support in Hybrid Mode
([#&#8203;4586](https://redirect.github.com/vuejs/language-tools/issues/4586))
- Fix yarn 4 compatibility
([#&#8203;4587](https://redirect.github.com/vuejs/language-tools/issues/4587))
- Add vue vine to hybrid mode compatible list
([#&#8203;4543](https://redirect.github.com/vuejs/language-tools/issues/4543))
- Thanks [@&#8203;so1ve](https://redirect.github.com/so1ve)
- Add global components prop validation test
([#&#8203;4542](https://redirect.github.com/vuejs/language-tools/issues/4542))
- Thanks [@&#8203;davidmatter](https://redirect.github.com/davidmatter)

###
[`v2.0.28`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#2028-supofficialsup-2029-supinsiderssup-2024-07-22)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.0.26...v2.0.28)

##### Features

-   **vscode:** focus mode <sup>Insiders</sup>
-   **language-core:** Plugin API 2.1
    -   Added plugin hooks: `getLanguageId`, `isValidFile`, `parseSFC2`
- Improve backward compatibility
([#&#8203;4585](https://redirect.github.com/vuejs/language-tools/issues/4585))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- **language-core:** support default prop when using \__typeProps
([#&#8203;4602](https://redirect.github.com/vuejs/language-tools/issues/4602))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- **language-core:** improve nested plugins
([#&#8203;4581](https://redirect.github.com/vuejs/language-tools/issues/4581))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- **language-service:** remove `v-bind` code action
([#&#8203;4601](https://redirect.github.com/vuejs/language-tools/issues/4601))
- **vscode:** add empty pattern to codeblock attributes scope
([#&#8203;4590](https://redirect.github.com/vuejs/language-tools/issues/4590))
- Thanks [@&#8203;KermanX](https://redirect.github.com/KermanX)

##### Fixes

- **tsc:** errors should be thrown instead of being console.log printed
- **language-server:** observe named pipes changes when server startup
([#&#8203;4292](https://redirect.github.com/vuejs/language-tools/issues/4292))
- **language-core:** infer define model type from options type
([#&#8203;4545](https://redirect.github.com/vuejs/language-tools/issues/4545))
- Thanks [@&#8203;davidmatter](https://redirect.github.com/davidmatter)
- **language-core:** type-checking not working with hyphen in slot name
with JS
([#&#8203;4478](https://redirect.github.com/vuejs/language-tools/issues/4478))
- Thanks [@&#8203;KermanX](https://redirect.github.com/KermanX)
- **language-core:** add type check for v-model without argument
([#&#8203;4598](https://redirect.github.com/vuejs/language-tools/issues/4598))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- **language-service:** filter special tags
([#&#8203;4596](https://redirect.github.com/vuejs/language-tools/issues/4596))
- Thanks [@&#8203;so1ve](https://redirect.github.com/so1ve)
- **typescript-plugin:** improve named pipes reliability
([#&#8203;4603](https://redirect.github.com/vuejs/language-tools/issues/4603))
- **language-core** property access is incorrectly identified as
compound expression
([#&#8203;4600](https://redirect.github.com/vuejs/language-tools/issues/4600))
- **language-core** fix compatibility of generic component virtual code
with TS 5.5
([#&#8203;4577](https://redirect.github.com/vuejs/language-tools/issues/4577))
- **tsc** TS4082 not reported for functional component
([#&#8203;4569](https://redirect.github.com/vuejs/language-tools/issues/4569))

##### Other Changes

-   Upgraded Volar from `v2.4.0-alpha.15` to `v2.4.0-alpha.18`:
- Fix VS Code IntelliSense will be lost in new created files
([#&#8203;4424](https://redirect.github.com/vuejs/language-tools/issues/4424))
- Add workspace symbols support in Hybrid Mode
([#&#8203;4595](https://redirect.github.com/vuejs/language-tools/issues/4595))
- Add workspace `addMissingImports` action support in Hybrid Mode
([#&#8203;4586](https://redirect.github.com/vuejs/language-tools/issues/4586))
- Fix yarn 4 compatibility
([#&#8203;4587](https://redirect.github.com/vuejs/language-tools/issues/4587))
- Add vue vine to hybrid mode compatible list
([#&#8203;4543](https://redirect.github.com/vuejs/language-tools/issues/4543))
- Thanks [@&#8203;so1ve](https://redirect.github.com/so1ve)
- Add global components prop validation test
([#&#8203;4542](https://redirect.github.com/vuejs/language-tools/issues/4542))
- Thanks [@&#8203;davidmatter](https://redirect.github.com/davidmatter)

###
[`v2.0.26`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#2026-supofficialsup-2027-supinsiderssup-2024-07-04)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.0.24...v2.0.26)

##### Features

- **language-service:** Support auto-complete for more preprocessing
languages.
- **language-core:** Improve type compatibility with Vue 3.5.
([#&#8203;4474](https://redirect.github.com/vuejs/language-tools/issues/4474))
- Thanks, [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj).

##### Bug Fixes

- **vscode:** Fix insider version display condition. <sup>Insiders</sup>
- **language-service:** Fix `vue-twoslash-queries` not working in LSP
mode.
- **language-service:** Add null handling for script tag completion
items.
([#&#8203;4520](https://redirect.github.com/vuejs/language-tools/issues/4520))
- **language-core:** Fix `any` in templates if the first checked file
was not root.
([#&#8203;4526](https://redirect.github.com/vuejs/language-tools/issues/4526))
- Thanks,
[@&#8203;daniluk4000](https://redirect.github.com/daniluk4000).

##### Other Changes

-   Upgraded Volar from `v2.4.0-alpha.2` to `v2.4.0-alpha.14`:
- Fixed an issue where, when Hybrid Mode is disabled, TS support for Vue
files not included in tsconfig may be missing.
- Improved the consistency of `vue-tsc` and `tsc` behavior.
([#&#8203;3526](https://redirect.github.com/vuejs/language-tools/issues/3526))
    -   Fixed the `--clean` flag support for `vue-tsc`.
-   Updated the high-level overview mermaid diagram.
- Added 'expected' and 'actually happening' sections to the bug report
template.
([#&#8203;4515](https://redirect.github.com/vuejs/language-tools/issues/4515))
- Thanks,
[@&#8203;davidmatter](https://redirect.github.com/davidmatter).

###
[`v2.0.24`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#2024-supofficialsup-2025-supinsiderssup-2024-06-30)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.0.22...v2.0.24)

##### Features

- **vscode:** pop message box if new insiders version available
<sup>insiders</sup>
- **vscode:** if insiders versions information failed to fetch from
GitHub, try to fetch from CDN <sup>insiders</sup>
- **language-service:** better sfc-level tag name completion
([#&#8203;4506](https://redirect.github.com/vuejs/language-tools/issues/4506))
- Thanks [@&#8203;KermanX](https://redirect.github.com/KermanX)

##### Bug Fixes

- **tsc:** update required volar version
([#&#8203;4498](https://redirect.github.com/vuejs/language-tools/issues/4498))
- Thanks [@&#8203;davidmatter](https://redirect.github.com/davidmatter)
- **tsc:** bump peer typescript version
([#&#8203;4513](https://redirect.github.com/vuejs/language-tools/issues/4513))
- Thanks [@&#8203;so1ve](https://redirect.github.com/so1ve)

##### Refactors

- **language-server:** reorganize the code structure
([#&#8203;4507](https://redirect.github.com/vuejs/language-tools/issues/4507))

##### Other Changes

-   Upgrade Volar from `v2.3.1` to `v2.4.0-alpha.2`.
- Hybrid Mode compatibility improvements with other TS plugins
([https://github.com/volarjs/volar.js/issues/216](https://redirect.github.com/volarjs/volar.js/issues/216))
- **docs:** add nvim-cmp integration
([#&#8203;4463](https://redirect.github.com/vuejs/language-tools/issues/4463))
- Thanks
[@&#8203;RayGuo-ergou](https://redirect.github.com/RayGuo-ergou)
-   **docs:** update mermaid
- The following extensions have been added to Hybrid Mode’s
compatibility whitelist
([#&#8203;4206](https://redirect.github.com/vuejs/language-tools/issues/4206)):
    -   `p42ai.refactor`
    -   `nrwl.angular-console`
    -   `styled-components.vscode-styled-components`
    -   `Divlo.vscode-styled-jsx-languageserver`

###
[`v2.0.22`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#2022-2024-06-22)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.0.21...v2.0.22)

##### Bug Fixes

- **vscode:** directive syntax highlighting
([#&#8203;4482](https://redirect.github.com/vuejs/language-tools/issues/4482))
- Thanks [@&#8203;KermanX](https://redirect.github.com/KermanX)
- **language-core:** move declare defineProp out of function scope
([#&#8203;4454](https://redirect.github.com/vuejs/language-tools/issues/4454))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- **language-core:** compatible with TS 5.5
([#&#8203;4492](https://redirect.github.com/vuejs/language-tools/issues/4492))

##### Other Changes

-   Upgrade Volar from `v2.3.0-alpha.14` to `v2.3.1`.
- Error tolerant to `contentChanges` length
([#&#8203;4457](https://redirect.github.com/vuejs/language-tools/issues/4457))
- Add feature request template
([#&#8203;4490](https://redirect.github.com/vuejs/language-tools/issues/4490))
- Thanks [@&#8203;so1ve](https://redirect.github.com/so1ve)
- **docs:** fix wrong links in CHANGELOG.md
([#&#8203;4475](https://redirect.github.com/vuejs/language-tools/issues/4475))
- Thanks [@&#8203;KermanX](https://redirect.github.com/KermanX)

###
[`v2.0.21`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#2021-2024-06-08)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.0.20...v2.0.21)

##### Bug Fixes

- fix(typescript-plugin): TS plugin cause type checking broken in .ts
files
([#&#8203;4453](https://redirect.github.com/vuejs/language-tools/issues/4453))

###
[`v2.0.20`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#2020-2024-06-08)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.0.19...v2.0.20)

##### Features

-   feat(language-service): add localization support for zh-hk/zh-tw
- feat(vscode): enable syntax highlighting of cue code blocks in MDX
([#&#8203;4425](https://redirect.github.com/vuejs/language-tools/issues/4425))
- Thanks
[@&#8203;remcohaszing](https://redirect.github.com/remcohaszing)

##### Bug Fixes

- fix(vscode): fix "as"/"instanceof" expressions syntax highlight
([#&#8203;4412](https://redirect.github.com/vuejs/language-tools/issues/4412))
- fix(language-core): `ForIteratorExpression`'s `returns` property may
be undefined
([#&#8203;4418](https://redirect.github.com/vuejs/language-tools/issues/4418))
- Thanks [@&#8203;so1ve](https://redirect.github.com/so1ve)
- fix(language-core): use defineEmits calls instead of type infer
([#&#8203;4430](https://redirect.github.com/vuejs/language-tools/issues/4430))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- fix(tsc): log catched errors to console
([#&#8203;4451](https://redirect.github.com/vuejs/language-tools/issues/4451))
- Thanks [@&#8203;mik3ybark3r](https://redirect.github.com/mik3ybark3r)
- fix(typescript-plugin): TS not working in template when tsconfig
missing
([#&#8203;4452](https://redirect.github.com/vuejs/language-tools/issues/4452))
- fix(language-core): use type infer instead of await import
([#&#8203;4436](https://redirect.github.com/vuejs/language-tools/issues/4436))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- feat(language-core): ignore type error for new functional component
([#&#8203;4445](https://redirect.github.com/vuejs/language-tools/issues/4445))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- fix(language-core): ignore type error for possible component name
([#&#8203;4446](https://redirect.github.com/vuejs/language-tools/issues/4446))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
-   fix(language-service): filter internal props in template completion
-   fix(language-service): sort component props in template completion
- fix(language-core): duplicate completion appears at the beginning of
script setup block

##### Other Changes

-   Upgrade Volar from `v2.2.4` to `v2.3.0-alpha.14`.
    -   LSP server performance improved
- Language server now responds with the exact server capabilities for
initialization requests
- Auto insertion requests can now exit early in the language client
- The following extensions have been added to Hybrid Mode’s
compatibility whitelist:
- `kimuson.ts-type-expand` - Thanks
[@&#8203;zcf0508](https://redirect.github.com/zcf0508)

###
[`v2.0.19`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#2019-2024-05-16)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.0.18...v2.0.19)

##### Bug Fixes

- **language-core:** property 'xyz' does not exist on type 'abc' when
using v-for
([#&#8203;4386](https://redirect.github.com/vuejs/language-tools/issues/4386))
- **language-core:** avoid report error when events do not accept
parameters
([#&#8203;4387](https://redirect.github.com/vuejs/language-tools/issues/4387))
- **language-core:** inline dynamic event handlers should not expect
commas
([#&#8203;4387](https://redirect.github.com/vuejs/language-tools/issues/4387))

###
[`v2.0.18`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#2018-2024-05-15)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.0.17...v2.0.18)

##### Features

- feat(language-core): report unknown events when strictTemplates is
enabled
([#&#8203;3718](https://redirect.github.com/vuejs/language-tools/issues/3718))
- feat(language-core): add `compileSFCScript` plugin hook
([#&#8203;3200](https://redirect.github.com/vuejs/language-tools/issues/3200))
-   feat(vscode): add coffeescript syntax highlight support

##### Bug Fixes

- fix(language-core): fix event handler type for hyphen-case event names
- fix(language-core): allow binding multiple events with the same name
([#&#8203;4369](https://redirect.github.com/vuejs/language-tools/issues/4369))
- fix(language-core): variable used in `key` appears as unused in v-for
template tag
([#&#8203;329](https://redirect.github.com/vuejs/language-tools/issues/329))
([#&#8203;3421](https://redirect.github.com/vuejs/language-tools/issues/3421))
- fix(language-core): generics with slots don't work with Vue 2.7
([#&#8203;3241](https://redirect.github.com/vuejs/language-tools/issues/3241))
- fix(language-core): template language of .md files should be markdown
([#&#8203;4299](https://redirect.github.com/vuejs/language-tools/issues/4299))
- fix(language-core): no template class links when
`experimentalResolveStyleCssClasses` is set to `always`
([#&#8203;4379](https://redirect.github.com/vuejs/language-tools/issues/4379))

##### Other Changes

-   Upgrade Volar from `v2.2.2` to `v2.2.4`.
    -   Fixed a few URI conversion issues
- fix(typescript): empty items list should be valid completion result
([#&#8203;4368](https://redirect.github.com/vuejs/language-tools/issues/4368))
    -   fix(typescript): path completion not working for meta files
-   Upgrade Volar services from `v0.0.44` to `v0.0.45`.
    -   fix(typescript-twoslash-queries): inlay hints not working
    -   fix(css, html, json, yaml): failed to resolve relative path
- feat(emmet): port VSCode emmet extension client logic
([https://github.com/volarjs/services/issues/95](https://redirect.github.com/volarjs/services/issues/95))
- The following extensions have been added to Hybrid Mode’s
compatibility whitelist:
    -   `miaonster.vscode-tsx-arrow-definition`
    -   `runem.lit-plugin`

###
[`v2.0.17`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#2017-2024510)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.0.16...v2.0.17)

##### Features

- **language-core:** add JSDod support for component
([#&#8203;2377](https://redirect.github.com/vuejs/language-tools/issues/2377))
- **language-core:** add JSDoc support for script setup binding
variables
([#&#8203;3409](https://redirect.github.com/vuejs/language-tools/issues/3409))
- **language-core:** add class component support
([#&#8203;4354](https://redirect.github.com/vuejs/language-tools/issues/4354))
- **language-service:** re-support scoped class links in template
([#&#8203;4357](https://redirect.github.com/vuejs/language-tools/issues/4357))
- **typescript-plugin:** create script setup block when auto import if
needed
- **typescript-plugin:** add JSDoc support for events in template
([#&#8203;4365](https://redirect.github.com/vuejs/language-tools/issues/4365))
-   **component-meta:** add JSDoc tags support for events
- **language-core:** support defineOptions
([#&#8203;4362](https://redirect.github.com/vuejs/language-tools/issues/4362))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)

##### Bug Fixes

- **language-core:** hover not working for intrinsic element event name
- **language-core:** showing false *declared but not used* errors for
functions used in `v-on="{}"`
([#&#8203;4333](https://redirect.github.com/vuejs/language-tools/issues/4333))
-   **language-core:** fix nameless event expression formatting
- **language-core:** types imported in the `<script setup>` should not
be used as a variable in template
([#&#8203;4353](https://redirect.github.com/vuejs/language-tools/issues/4353))
- **language-core:** renaming classname within `scoped` not working
([#&#8203;4355](https://redirect.github.com/vuejs/language-tools/issues/4355))
- **language-core:** `<style>` completions and html custom data
completions not provided in some cases
([#&#8203;4092](https://redirect.github.com/vuejs/language-tools/issues/4092))
-   **language-core:** improve code action edits mapping fault tolerance
- **language-core:** support defineModel for generic component
([#&#8203;4345](https://redirect.github.com/vuejs/language-tools/issues/4345))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
-   **language-service:** completion cannot trigger in SFC root
-   **component-meta:** `forceUseTs` options not working

##### Other Changes

-   Upgrade Volar from `v2.2.0` to `v2.2.2`.
- fix(language-server): pass correct languageId when creating virtual
code
([https://github.com/volarjs/volar.js/issues/173](https://redirect.github.com/volarjs/volar.js/issues/173))
- fix(typescript): additional completion not working in plugin
([#&#8203;4323](https://redirect.github.com/vuejs/language-tools/issues/4323))
-   Upgrade Volar services from `v0.0.42` to `v0.0.44`.
- feat(typescript): code action edits respect editor formatting settings
([https://github.com/volarjs/services/issues/30](https://redirect.github.com/volarjs/services/issues/30))
- fix(typescript): not being able to jump to shims module definition
- fix(typescript): `allowTextChangesInNewFiles` never true for embedded
documents
- perf(typescript): check `command` resolve capability only for specific
refactors
([https://github.com/volarjs/services/issues/94](https://redirect.github.com/volarjs/services/issues/94))
- The following extensions have been added to Hybrid Mode’s
compatibility whitelist:
    -   `mxsdev.typescript-explorer`
- Deprecated `vueCompilerOptions.experimentalUseElementAccessInTemplate`
- Specify `packageManager`
([#&#8203;4358](https://redirect.github.com/vuejs/language-tools/issues/4358))
- Thanks [@&#8203;so1ve](https://redirect.github.com/so1ve)
- **docs:** emoved possibly redundant duplicate reference
([#&#8203;4348](https://redirect.github.com/vuejs/language-tools/issues/4348))
- Thanks [@&#8203;artshade](https://redirect.github.com/artshade)
- **language-service:** temporarily remove references codeLens
([#&#8203;4364](https://redirect.github.com/vuejs/language-tools/issues/4364))
-   **vscode:** auto enabling hybrid mode allows

###
[`v2.0.16`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#2016-202451)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.0.15...v2.0.16)

##### Bug Fixes

- **language-core:** virtual document language ID is not updated when
changing SFC style block lang
- **language-core:** correct logic for `defineSlots` destructuring
([#&#8203;4326](https://redirect.github.com/vuejs/language-tools/issues/4326))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- **language-core:** ObjectDirective does not work with `defineSlots`
([#&#8203;4327](https://redirect.github.com/vuejs/language-tools/issues/4327))
- **language-service:** emmet not working in postcss style block
([https://github.com/volarjs/volar.js/issues/169](https://redirect.github.com/volarjs/volar.js/issues/169))

##### Other Changes

- Upgrade to [Volar
2.2](https://redirect.github.com/volarjs/volar.js/releases/tag/v2.2.0)
- **language-core:** export `VueEmbeddedCode`
([#&#8203;4265](https://redirect.github.com/vuejs/language-tools/issues/4265))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/zhiyuanzmj)
- **typescript-plugin:** expose `FileRegistry` to `project.program`
([#&#8203;3963](https://redirect.github.com/vuejs/language-tools/issues/3963))
- Thanks [@&#8203;zcf0508](https://redirect.github.com/zcf0508)
- **vscode:** remove outdated formatters section
([#&#8203;4243](https://redirect.github.com/vuejs/language-tools/issues/4243))
- Thanks [@&#8203;BBboy01](https://redirect.github.com/BBboy01)

###
[`v2.0.15`](https://redirect.github.com/vuejs/language-tools/blob/HEAD/CHANGELOG.md#2015-2024430)

[Compare
Source](https://redirect.github.com/vuejs/language-tools/compare/v2.0.14...v2.0.15)

##### Features

- Redesign additional extensions, VitePress, PetiteVue support
([#&#8203;4321](https://redirect.github.com/vuejs/language-tools/issues/4321))
- Fix custom file extensions not working in Hybrid Mode
([#&#8203;4251](https://redirect.github.com/vuejs/language-tools/issues/4251))
- **vscode:** prompt when Hybrid Mode is explicitly enabled but known
incompatible extensions are installed
- **language-core:** use internal options for directly exposing user
props/emits types
([vuejs/core#10801](https://redirect.github.com/vuejs/core/pull/10801))
- **language-core:** support defineSlots destructuring
([#&#8203;4312](https://redirect.github.com/vuejs/language-tools/issues/4312))
- Thanks [@&#8203;zhiyuanzmj](https://redirect.github.com/

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/unraid/api).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzYuMiIsInVwZGF0ZWRJblZlciI6IjM5LjE3Ni4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-21 07:30:32 -05:00
renovate[bot]
f9f47cbab3 chore(deps): update dependency @rollup/plugin-node-resolve to v16 (#1162)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-02-20 19:50:41 -05:00
719 changed files with 20962 additions and 10491 deletions

21
.github/CODEOWNERS vendored
View File

@@ -1 +1,20 @@
@elibosley @pujitm @mdatelle @zackspear
# Default owners for everything in the repo
* @elibosley @pujitm @mdatelle @zackspear
# API specific files
/api/ @elibosley @pujitm @mdatelle
# Web frontend files
/web/ @elibosley @mdatelle @zackspear
# Plugin related files
/plugin/ @elibosley
# Unraid UI specific files
/unraid-ui/ @mdatelle @zackspear @pujitm
# GitHub workflows and configuration
/.github/ @elibosley
# Documentation
*.md @elibosley @pujitm @mdatelle @zackspear

View File

@@ -3,7 +3,7 @@ name: Work Intent
about: Request approval for planned development work (must be approved before starting)
title: 'Work Intent: '
labels: work-intent, unapproved
assignees: ''
assignees: 'elibosley'
---
<!--

View File

@@ -12,19 +12,25 @@ concurrency:
jobs:
release-please:
name: Release Please
# Only run release-please on pushes to main
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v4
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
- id: release
uses: googleapis/release-please-action@v4
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
outputs:
releases_created: ${{ steps.release.outputs.releases_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
releases_created: ${{ steps.release.outputs.releases_created || 'false' }}
tag_name: ${{ steps.release.outputs.tag_name || '' }}
test-api:
name: Test API
defaults:
run:
working-directory: api
@@ -73,7 +79,7 @@ jobs:
run: pnpm run coverage
build-api:
name: Build and Test API
name: Build API
runs-on: ubuntu-latest
defaults:
run:
@@ -122,7 +128,6 @@ jobs:
- name: Type Check
run: pnpm run type-check
continue-on-error: true
- name: Build
run: pnpm run build
@@ -137,13 +142,21 @@ jobs:
export API_VERSION
- name: Build
run: pnpm run build-and-pack
run: |
pnpm run build:release
tar -czf deploy/unraid-api.tgz -C deploy/pack/ .
- name: Upload tgz to Github artifacts
uses: actions/upload-artifact@v4
with:
name: unraid-api
path: ${{ github.workspace }}/api/deploy/release/*.tgz
path: ${{ github.workspace }}/api/deploy/unraid-api.tgz
- name: Upload PNPM Store to Github artifacts
uses: actions/upload-artifact@v4
with:
name: packed-pnpm-store
path: ${{ github.workspace }}/api/deploy/packed-pnpm-store.txz
build-unraid-ui-webcomponents:
name: Build Unraid UI Library (Webcomponent Version)
@@ -197,13 +210,11 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: unraid-wc-ui
path: unraid-ui/dist/
path: unraid-ui/dist-wc/
build-web:
# needs: [build-unraid-ui]
name: Build Web App
environment:
name: production
defaults:
run:
working-directory: web
@@ -215,10 +226,10 @@ jobs:
- name: Create env file
run: |
touch .env
echo VITE_ACCOUNT=${{ vars.VITE_ACCOUNT }} >> .env
echo VITE_CONNECT=${{ vars.VITE_CONNECT }} >> .env
echo VITE_UNRAID_NET=${{ vars.VITE_UNRAID_NET }} >> .env
echo VITE_CALLBACK_KEY=${{ vars.VITE_CALLBACK_KEY }} >> .env
echo VITE_ACCOUNT=${{ secrets.VITE_ACCOUNT }} >> .env
echo VITE_CONNECT=${{ secrets.VITE_CONNECT }} >> .env
echo VITE_UNRAID_NET=${{ secrets.VITE_UNRAID_NET }} >> .env
echo VITE_CALLBACK_KEY=${{ secrets.VITE_CALLBACK_KEY }} >> .env
cat .env
- name: Install Node
@@ -254,10 +265,13 @@ jobs:
run: |
cd ${{ github.workspace }}/unraid-ui
pnpm run build
- name: Lint files
continue-on-error: true
run: pnpm run lint
- name: Type Check
run: pnpm run type-check
- name: Test
run: pnpm run test:ci
@@ -271,16 +285,20 @@ jobs:
path: web/.nuxt/nuxt-custom-elements/dist/unraid-components
build-plugin:
needs: [build-api, build-web, build-unraid-ui-webcomponents]
outputs:
tag: ${{ steps.build-plugin.outputs.tag }}
name: Build and Deploy Plugin
needs:
- release-please
- build-api
- build-web
- build-unraid-ui-webcomponents
- test-api
defaults:
run:
working-directory: plugin
runs-on: ubuntu-latest
steps:
- name: Set Timezone
uses: szenius/set-timezone@v1.2
uses: szenius/set-timezone@v2.0
with:
timezoneLinux: "America/Los_Angeles"
- name: Checkout repo
@@ -296,7 +314,6 @@ jobs:
- uses: pnpm/action-setup@v4
name: Install pnpm
with:
run_install: false
- name: Get pnpm store directory
@@ -304,6 +321,15 @@ jobs:
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Get API Version
id: vars
run: |
GIT_SHA=$(git rev-parse --short HEAD)
IS_TAGGED=$(git describe --tags --abbrev=0 --exact-match || echo '')
PACKAGE_LOCK_VERSION=$(jq -r '.version' package.json)
API_VERSION=$([[ -n "$IS_TAGGED" ]] && echo "$PACKAGE_LOCK_VERSION" || echo "${PACKAGE_LOCK_VERSION}+${GIT_SHA}")
echo "API_VERSION=${API_VERSION}" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
name: Setup pnpm cache
@@ -318,73 +344,117 @@ jobs:
cd ${{ github.workspace }}
pnpm install --frozen-lockfile --filter @unraid/connect-plugin
- name: Download Unraid UI Components
uses: actions/download-artifact@v4
with:
name: unraid-wc-ui
path: ${{ github.workspace }}/plugin/source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/unraid-components/uui
merge-multiple: true
- name: Download Unraid Web Components
uses: actions/download-artifact@v4
with:
pattern: unraid-wc-*
path: ./plugin/source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/unraid-components
pattern: unraid-wc-rich
path: ${{ github.workspace }}/plugin/source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/unraid-components/nuxt
merge-multiple: true
- name: Download Unraid API
uses: actions/download-artifact@v4
with:
name: unraid-api
path: /tmp/unraid-api/
- name: Extract Unraid API and Build Plugin
id: build-plugin
run: |
tar -xzf /tmp/unraid-api/unraid-api.tgz -C ${{ github.workspace }}/plugin/source/dynamix.unraid.net/usr/local/unraid-api
cd ${{ github.workspace }}/plugin
if [ -n "${{ github.event.pull_request.number }}" ]; then
export TAG=PR${{ github.event.pull_request.number }}
# Put tag into github env
echo "TAG=${TAG}" >> $GITHUB_OUTPUT
fi
pnpm run build
- name: Upload binary txz and plg to Github artifacts
uses: actions/upload-artifact@v4
with:
name: connect-files
path: |
plugin/deploy/release/plugins/
plugin/deploy/release/archive/*.txz
retention-days: 5
if-no-files-found: error
release-pull-request:
if: |
github.event_name == 'pull_request'
runs-on: ubuntu-latest
needs: [test-api, build-plugin]
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Make PR Release Folder
run: mkdir pr-release/
- name: Download plugin binary tgz
path: ${{ github.workspace }}/plugin/api/
- name: Download PNPM Store
uses: actions/download-artifact@v4
with:
name: connect-files
- name: Copy other release files to pr-release
name: packed-pnpm-store
path: ${{ github.workspace }}/plugin/
- name: Extract Unraid API
run: |
cp archive/*.txz pr-release/
cp plugins/pr/dynamix.unraid.net.plg pr-release/dynamix.unraid.net.plg
mkdir -p ${{ github.workspace }}/plugin/source/dynamix.unraid.net/usr/local/unraid-api
tar -xzf ${{ github.workspace }}/plugin/api/unraid-api.tgz -C ${{ github.workspace }}/plugin/source/dynamix.unraid.net/usr/local/unraid-api
- name: Build Plugin and TXZ Based on Event and Tag
id: build-plugin
run: |
cd ${{ github.workspace }}/plugin
ls -al
pnpm run build:txz
if [ -n "${{ github.event.pull_request.number }}" ]; then
TAG="PR${{ github.event.pull_request.number }}"
BUCKET_PATH="unraid-api/tag/${TAG}"
else
TAG=""
BUCKET_PATH="unraid-api"
fi
# On release, build both prod and preview plugins
if [ "${{ needs.release-please.outputs.releases_created }}" == 'true' ]; then
BASE_URL="https://stable.dl.unraid.net/unraid-api"
pnpm run build:plugin --tag="${TAG}" --base-url="${BASE_URL}"
cp -r ./deploy ./deploy-prod
fi
BASE_URL="https://preview.dl.unraid.net/unraid-api"
echo "BUCKET_PATH=${BUCKET_PATH}" >> $GITHUB_OUTPUT
echo "TAG=${TAG}" >> $GITHUB_OUTPUT
pnpm run build:plugin --tag="${TAG}" --base-url="${BASE_URL}"
- name: Ensure Plugin Files Exist
run: |
ls -al ./deploy
if [ ! -f ./deploy/*.plg ]; then
echo "Error: .plg file not found in plugin/deploy/"
exit 1
fi
if [ ! -f ./deploy/*.txz ]; then
echo "Error: .txz file not found in plugin/deploy/"
exit 1
fi
- name: Ensure Production Plugin Files Exist
if: needs.release-please.outputs.releases_created == 'true'
run: |
ls -al ./deploy-prod
if [ ! -f ./deploy-prod/*.plg ]; then
echo "Error: .plg file not found in plugin/deploy-prod/"
exit 1
fi
if [ ! -f ./deploy-prod/*.txz ]; then
echo "Error: .txz file not found in plugin/deploy-prod/"
exit 1
fi
- name: Upload to GHA
uses: actions/upload-artifact@v4
with:
name: unraid-plugin
path: plugin/deploy/
- name: Upload to Cloudflare
uses: jakejarvis/s3-sync-action@v0.5.1
if: github.event_name == 'pull_request' || startsWith(github.ref, 'refs/heads/main')
env:
AWS_S3_ENDPOINT: ${{ secrets.CF_ENDPOINT }}
AWS_S3_BUCKET: ${{ secrets.CF_BUCKET_PREVIEW }}
AWS_ACCESS_KEY_ID: ${{ secrets.CF_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_SECRET_ACCESS_KEY }}
AWS_REGION: "auto"
SOURCE_DIR: pr-release
DEST_DIR: unraid-api/tag/${{ needs.build-plugin.outputs.tag }}
AWS_DEFAULT_REGION: auto
run: |
# Sync the deploy directory to the Cloudflare bucket with explicit content encoding and public-read ACL
aws s3 sync deploy/ s3://${{ secrets.CF_BUCKET_PREVIEW }}/${{ steps.build-plugin.outputs.BUCKET_PATH }} \
--endpoint-url ${{ secrets.CF_ENDPOINT }} \
--checksum-algorithm CRC32 \
--no-guess-mime-type \
--content-encoding none \
--acl public-read
- name: Upload Release Assets
if: needs.release-please.outputs.releases_created == 'true'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
release_name=$(gh release list --repo ${{ github.repository }} --json name,isDraft --jq '.[] | select(.isDraft == true) | .name' | head -n 1)
# For each file in release directory
for file in deploy-prod/*; do
echo "Uploading $file to release..."
gh release upload "${release_name}" "$file" --clobber
done
- name: Comment URL
if: github.event_name == 'pull_request'
uses: thollander/actions-comment-pull-request@v3
with:
comment-tag: prlink
@@ -393,73 +463,5 @@ jobs:
This plugin has been deployed to Cloudflare R2 and is available for testing.
Download it at this URL:
```
https://preview.dl.unraid.net/unraid-api/tag/${{ needs.build-plugin.outputs.tag }}/dynamix.unraid.net.plg
https://preview.dl.unraid.net/unraid-api/tag/${{ steps.build-plugin.outputs.tag }}/dynamix.unraid.net.plg
```
release-staging:
environment:
name: staging
# Only release if this is a push to the main branch
if: startsWith(github.ref, 'refs/heads/main')
runs-on: ubuntu-latest
needs: [test-api, build-plugin]
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Make Staging Release Folder
run: mkdir staging-release/
- name: Download plugin binary tgz
uses: actions/download-artifact@v4
with:
name: connect-files
- name: Copy Files for Staging Release
run: |
cp archive/*.txz staging-release/
cp plugins/staging/dynamix.unraid.net.plg staging-release/dynamix.unraid.net.plg
ls -al staging-release
- name: Upload Staging Plugin to Cloudflare Bucket
uses: jakejarvis/s3-sync-action@v0.5.1
env:
AWS_S3_ENDPOINT: ${{ secrets.CF_ENDPOINT }}
AWS_S3_BUCKET: ${{ secrets.CF_BUCKET_PREVIEW }}
AWS_ACCESS_KEY_ID: ${{ secrets.CF_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_SECRET_ACCESS_KEY }}
AWS_REGION: "auto"
SOURCE_DIR: staging-release
DEST_DIR: unraid-api
create-draft-release:
# Only run if release-please created a release
if: needs.release-please.outputs.releases_created == 'true'
runs-on: ubuntu-latest
needs: [release-please, test-api, build-plugin]
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Download plugin binary tgz
uses: actions/download-artifact@v4
with:
name: connect-files
- name: Move Files to Release Folder
run: |
mkdir -p release/
mv plugins/production/dynamix.unraid.net.plg release/
mv archive/*.txz release/
- name: Upload Release Assets
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
release_name=$(gh release list --repo ${{ github.repository }} --json name,isDraft --jq '.[] | select(.isDraft == true) | .name' | head -n 1)
# For each file in release directory
for file in release/*; do
echo "Uploading $file to release..."
gh release upload "${release_name}" "$file" --clobber
done

View File

@@ -13,7 +13,7 @@ jobs:
contents: read
steps:
- name: Set Timezone
uses: szenius/set-timezone@v1.2
uses: szenius/set-timezone@v2.0
with:
timezoneLinux: "America/Los_Angeles"
- name: Checkout repo

View File

@@ -3,6 +3,12 @@ name: Publish Release to Digital Ocean
on:
release:
types: [published]
workflow_dispatch:
inputs:
version:
description: 'Tag to update'
required: true
jobs:
publish-to-digital-ocean:
@@ -16,7 +22,7 @@ jobs:
regex: true
token: ${{ secrets.GITHUB_TOKEN }}
target: "./"
version: "latest"
version: ${{ inputs.version && format('tags/{0}', inputs.version) || 'latest' }}
- uses: cardinalby/git-get-release-action@v1
id: release-info
@@ -25,32 +31,91 @@ jobs:
with:
latest: true
prerelease: false
- name: Get Release Changelog
run: |
notes=$(cat << EOF
${{ steps.release-info.outputs.body }}
EOF
)
escapedNotes=$(sed -e 's/[&\\/]/\\&/g; s/$/\\/' -e '$s/\\$//' <<<"$notes")
sed -i -z -E "s/<CHANGES>(.*)<\/CHANGES>/<CHANGES>\n${escapedNotes}\n<\/CHANGES>/g" "dynamix.unraid.net.plg"
- name: Upload All Release Files to DO Spaces
uses: BetaHuhn/do-spaces-action@v2
- uses: actions/setup-node@v4
with:
access_key: ${{ secrets.DO_ACCESS_KEY }}
secret_key: ${{ secrets.DO_SECRET_KEY }}
space_name: ${{ secrets.DO_SPACE_NAME }}
space_region: ${{ secrets.DO_SPACE_REGION }}
source: "."
out_dir: unraid-api
node-version: '22.x'
- run: npm install html-escaper@2 xml2js
- name: Update Plugin Changelog
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const { escape } = require('html-escaper');
const releaseNotes = escape(`${{ steps.release-info.outputs.body }}`);
if (!releaseNotes) {
console.error('No release notes found');
process.exit(1);
}
- name: Upload Staging Plugin to Cloudflare Bucket
uses: jakejarvis/s3-sync-action@v0.5.1
// Read the plugin file
const pluginPath = 'dynamix.unraid.net.plg';
if (!fs.existsSync(pluginPath)) {
console.error('Plugin file not found:', pluginPath);
process.exit(1);
}
let pluginContent = fs.readFileSync(pluginPath, 'utf8');
// Replace the changelog section using CDATA
pluginContent = pluginContent.replace(
/<CHANGES>[\s\S]*?<\/CHANGES>/,
`<CHANGES>\n${releaseNotes}\n</CHANGES>`
);
// Validate the plugin file is valid XML
const xml2js = require('xml2js');
const parser = new xml2js.Parser({
explicitCharkey: true,
trim: true,
explicitRoot: true,
explicitArray: false,
attrkey: 'ATTR',
charkey: 'TEXT',
xmlnskey: 'XMLNS',
normalizeTags: false,
normalize: false,
strict: false // Try with less strict parsing
});
parser.parseStringPromise(pluginContent).then((result) => {
if (!result) {
console.error('Plugin file is not valid XML');
process.exit(1);
}
console.log('Plugin file is valid XML');
// Write back to file
fs.writeFileSync(pluginPath, pluginContent);
}).catch((err) => {
console.error('Plugin file is not valid XML', err);
process.exit(1);
});
- name: Upload Release Files to DO Spaces
env:
AWS_ACCESS_KEY_ID: ${{ secrets.DO_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.DO_SECRET_KEY }}
AWS_DEFAULT_REGION: ${{ secrets.DO_SPACE_REGION }}
AWS_ENDPOINT_URL: https://${{ secrets.DO_SPACE_REGION }}.digitaloceanspaces.com
run: |
# Upload files with explicit content encoding and public-read ACL
aws s3 sync . s3://${{ secrets.DO_SPACE_NAME }}/unraid-api \
--checksum-algorithm CRC32 \
--no-guess-mime-type \
--content-encoding none \
--acl public-read
- name: Upload Release Files to Cloudflare Bucket
env:
AWS_S3_ENDPOINT: ${{ secrets.CF_ENDPOINT }}
AWS_S3_BUCKET: ${{ secrets.CF_BUCKET }}
AWS_ACCESS_KEY_ID: ${{ secrets.CF_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.CF_SECRET_ACCESS_KEY }}
AWS_REGION: 'auto'
SOURCE_DIR: "."
DEST_DIR: unraid-api
AWS_DEFAULT_REGION: auto
AWS_ENDPOINT_URL: ${{ secrets.CF_ENDPOINT }}
run: |
# Upload files with explicit content encoding and public-read ACL
aws s3 sync . s3://${{ secrets.CF_BUCKET }}/unraid-api \
--checksum-algorithm CRC32 \
--no-guess-mime-type \
--content-encoding none \
--acl public-read

View File

@@ -28,7 +28,7 @@ jobs:
- uses: actions/setup-python@v5
with:
python-version: "3.10"
python-version: "3.13"
- name: Cache APT Packages
uses: awalsh128/cache-apt-pkgs-action@v1.4.3

13
.gitignore vendored
View File

@@ -88,10 +88,21 @@ deploy/*
.nitro
.cache
.output
.env*
!.env.example
fb_keepalive
# pnpm store
.pnpm-store
# Nix
result
result-*
.direnv/
.envrc
# Webgui sync script helpers
web/scripts/.sync-webgui-repo-*
# Activation code data
plugin/source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/data/activation-data.php

1
.npmrc Normal file
View File

@@ -0,0 +1 @@

2
.nvmrc
View File

@@ -1 +1 @@
20
22

View File

@@ -1 +1 @@
{"api":"4.1.2","web":"4.1.2","unraid-ui":"4.1.2","plugin":"4.1.2"}
{".":"4.6.1"}

View File

@@ -7,6 +7,17 @@ Thank you for your interest in contributing to Unraid Connect! We want to make c
- Submitting a fix
- Proposing new features
## TypeScript Import Extensions in the API Directory
When working with the API directory, you'll notice that TypeScript files are imported with `.js` extensions (e.g., `import { something } from './file.js'`) even though the actual files have `.ts` extensions. This is because:
1. We use ECMAScript modules (ESM) in our TypeScript configuration
2. When TypeScript compiles `.ts` files to `.js`, the import paths in the compiled code need to reference `.js` files
3. TypeScript doesn't automatically change the extensions in import statements during compilation
4. Using `.js` extensions in imports ensures that both TypeScript during development and Node.js in production can resolve the modules correctly
This approach follows the [official TypeScript ESM recommendation](https://www.typescriptlang.org/docs/handbook/esm-node.html) and ensures compatibility across development and production environments.
## Development Process
We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.
@@ -47,6 +58,14 @@ We use GitHub to host code, to track issues and feature requests, as well as acc
**Note:** Direct pushes to the main branch are not allowed. All changes must go through the PR process.
## Developer Documentation
For detailed information about development workflows, repository organization, and other technical details, please refer to our developer documentation:
- [Development Guide](api/docs/developer/development.md) - Setup, building, and debugging instructions
- [Development Workflows](api/docs/developer/workflows.md) - Detailed workflows for local development, building, and deployment
- [Repository Organization](api/docs/developer/repo-organization.md) - High-level architecture and project structure
## Bug Reports and Feature Requests
We use GitHub issues to track bugs and feature requests:

352
LICENSE.txt Normal file
View File

@@ -0,0 +1,352 @@
Project License Notice
----------------------
This project is licensed under the terms of the GNU General Public License version 2,
**or (at your option) any later version** published by the Free Software Foundation.
The full text of the GNU GPL v2.0 is provided below for reference.
----------------------
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
<https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Unraid API - Core API functionality for Unraid systems
Copyright (C) 2024 Lime Technology, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
For questions about licensing or to report issues:
- Website: https://unraid.net
- Email: support@unraid.net
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Moe Ghoul>, 1 April 1989
Moe Ghoul, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

4
api/.env.production Normal file
View File

@@ -0,0 +1,4 @@
ENVIRONMENT="production"
NODE_ENV="production"
PORT="/var/run/unraid-api.sock"
MOTHERSHIP_GRAPHQL_LINK="https://mothership.unraid.net/ws"

4
api/.env.staging Normal file
View File

@@ -0,0 +1,4 @@
ENVIRONMENT="staging"
NODE_ENV="production"
PORT="/var/run/unraid-api.sock"
MOTHERSHIP_GRAPHQL_LINK="https://staging.mothership.unraid.net/ws"

View File

@@ -1,4 +1,5 @@
import eslint from '@eslint/js';
import importPlugin from 'eslint-plugin-import';
import noRelativeImportPaths from 'eslint-plugin-no-relative-import-paths';
import prettier from 'eslint-plugin-prettier';
import tseslint from 'typescript-eslint';
@@ -7,6 +8,7 @@ export default tseslint.config(eslint.configs.recommended, ...tseslint.configs.r
plugins: {
'no-relative-import-paths': noRelativeImportPaths,
prettier: prettier,
import: importPlugin,
},
rules: {
'@typescript-eslint/no-redundant-type-constituents': 'off',
@@ -22,7 +24,6 @@ export default tseslint.config(eslint.configs.recommended, ...tseslint.configs.r
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-unused-expressions': 'off',
'import/no-unresolved': 'off',
'import/extensions': 'off',
'import/no-absolute-path': 'off',
'import/prefer-default-export': 'off',
'no-relative-import-paths/no-relative-import-paths': [
@@ -30,6 +31,27 @@ export default tseslint.config(eslint.configs.recommended, ...tseslint.configs.r
{ allowSameFolder: false, rootDir: 'src', prefix: '@app' },
],
'prettier/prettier': 'error',
'import/extensions': [
'error',
'ignorePackages',
{
js: 'always',
ts: 'always',
},
],
'no-restricted-globals': [
'error',
{
name: '__dirname',
message: 'Use import.meta.url instead of __dirname in ESM',
},
{
name: '__filename',
message: 'Use import.meta.url instead of __filename in ESM',
},
],
'eol-last': ['error', 'always'],
},
ignores: ['src/graphql/generated/client/**/*'],
});

5
api/.gqlconfig Normal file
View File

@@ -0,0 +1,5 @@
{
schema: {
files: 'src/graphql/schema/types/**/*.graphql'
}
}

11
api/.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,11 @@
{
"recommendations": [
"mikestead.dotenv",
"eamodio.gitlens",
"dbaeumer.vscode-eslint",
"antfu.goto-alias",
"bierner.markdown-mermaid",
"github.vscode-pull-request-github",
"bierner.markdown-preview-github-styles"
]
}

View File

@@ -1,247 +1,393 @@
# Changelog
## [4.1.2](https://github.com/unraid/api/compare/v4.1.2...v4.1.2) (2025-02-21)
### Features
* add api key creation logic ([81382bc](https://github.com/unraid/api/commit/81382bcf1d26364ad9c5445530f648209101cf91))
* add category.json ([c9e87e2](https://github.com/unraid/api/commit/c9e87e2e5b47a8801b7865ed586c803d0b470915))
* add command to package.json scripts ([0dfb07f](https://github.com/unraid/api/commit/0dfb07f9eb519e60441f4123423f65acfdffca3b))
* add csrf support to api & web components ([#999](https://github.com/unraid/api/issues/999)) ([19241ed](https://github.com/unraid/api/commit/19241ed55f5112f878b9890d8695badf7eb1c3eb))
* add description flag, remove console log, and update readme ([c416c30](https://github.com/unraid/api/commit/c416c30951de4ed6b8d7a8c014403772db1c2015))
* add developer docs ([#1128](https://github.com/unraid/api/issues/1128)) ([bb2e340](https://github.com/unraid/api/commit/bb2e340b68268d5121db650b27e8b2580c7966bb))
* add line about recommendation for sso command ([44727a8](https://github.com/unraid/api/commit/44727a8d1a7c16c566678da43119b17a6303e375))
* add log rotation ([f5c7ad9](https://github.com/unraid/api/commit/f5c7ad9221f80e4630e69f78d57f08f4c7252719))
* add logging around fixture downloads ([a1ce27b](https://github.com/unraid/api/commit/a1ce27b17c970657f52635600f0d13116523f928))
* add logrotate cron again ([4f85f66](https://github.com/unraid/api/commit/4f85f6687f920dae50277e726e2db2c3d946e867))
* add patch for auth-request.php ([ec6ec56](https://github.com/unraid/api/commit/ec6ec562f43aac9947de2e9c269181303f42b2db))
* add user with cli ([37458cd](https://github.com/unraid/api/commit/37458cd7408a1ad8aedca66a55ff13ac19ee30db))
* address log level feedback ([49774aa](https://github.com/unraid/api/commit/49774aae459797f04ef2866ca064050aa476ae91))
* allow csrf passing through querystring ([dba38c0](https://github.com/unraid/api/commit/dba38c0d149a77e4104c718c53d426330a17f2fa))
* allow deletion and creation of files with patches ([32c9524](https://github.com/unraid/api/commit/32c952402c25e8340b1c628b4d0fdc4816b28ade))
* always ensureDirectory for keys exists ([c6e9f80](https://github.com/unraid/api/commit/c6e9f804c58e44b46bce9f0da2260888544354cd))
* **api:** graphql sandbox on unraid servers ([#1047](https://github.com/unraid/api/issues/1047)) ([ec504f3](https://github.com/unraid/api/commit/ec504f39297c92b64d9d3cc2f8f482cc1f3a2e44))
* **api:** omit tz from sys time date format by default ([b2acde3](https://github.com/unraid/api/commit/b2acde3351d7afe18a2902e90b672537aadabffd))
* **api:** rm 2fa & t2fa from myservers config type ([#996](https://github.com/unraid/api/issues/996)) ([89e791a](https://github.com/unraid/api/commit/89e791ad2e6f0395bee05e3f8bdcb2c8d72305dd))
* async disk mapping ([bbb27e6](https://github.com/unraid/api/commit/bbb27e686897e4f9a0c926553d75aa046d7a8323))
* async hypervisor and FIXED vm listing ([e79f4dd](https://github.com/unraid/api/commit/e79f4ddbc7061c249efb8214a311bb629628f669))
* auto-docusaurus-prs ([#1127](https://github.com/unraid/api/issues/1127)) ([1147e76](https://github.com/unraid/api/commit/1147e762ae2fed6dea198fa38d6bcc514a1e66fb))
* begin building plugin with node instead of bash ([#1120](https://github.com/unraid/api/issues/1120)) ([253b65a](https://github.com/unraid/api/commit/253b65a85ab9c5f53d53ef265b41aa132678f278))
* better patch application ([a3e7daa](https://github.com/unraid/api/commit/a3e7daa6a6565ac81004ffd13da35d8b95b429cf))
* better pm2 calls, log lines ([338ce30](https://github.com/unraid/api/commit/338ce3061310dfc42ad5f65edacbe5272de4afc7))
* cleanup config entries ([943e73f](https://github.com/unraid/api/commit/943e73fa696b6ecec3227be914ab4962c4fee79d))
* cleanup disclaimer and command to add users ([6be3af8](https://github.com/unraid/api/commit/6be3af8d7569d9c413dd9349df52e3fa4cb4f631))
* cli Commands ([f8e5367](https://github.com/unraid/api/commit/f8e5367f3eb47daa5bcbd7711ae5835369502a1d))
* CLI options for adding and deleting users ([16bf6d4](https://github.com/unraid/api/commit/16bf6d4c27ae8fa8d6d05ec4b28ce49a12673278))
* coderabbit suggestion ([11ac36c](https://github.com/unraid/api/commit/11ac36c3616a90853d91467526fd39ecba17db88))
* configure PM2 on startup ([2b908f1](https://github.com/unraid/api/commit/2b908f100b9eefaccf2264d5ff9945667568acf0))
* convert to pnpm monorepo ([#1137](https://github.com/unraid/api/issues/1137)) ([8d89f8b](https://github.com/unraid/api/commit/8d89f8b20d6f3983d4e85b33827a857aa862db37))
* create key cli command logic and add to index command list ([9b2a62d](https://github.com/unraid/api/commit/9b2a62d642b0942e3787e4ddd582a66e40321ab2))
* csv validation ([84aae15](https://github.com/unraid/api/commit/84aae15a73014592c226fa3701e34e57c7b60b46))
* default value for option ([6513fc4](https://github.com/unraid/api/commit/6513fc49de61c836e1aabf32a874d7da7da18adb))
* disable casbin logging ([2518e7c](https://github.com/unraid/api/commit/2518e7c506f0d3aa9f44031d61dce95d9db0a4cf))
* docstrings ([b836ba7](https://github.com/unraid/api/commit/b836ba72516c554ee8973d69aaaa4ed35b465fa7))
* dont pass entire server state for privacy ([54e3f17](https://github.com/unraid/api/commit/54e3f17bd9e541f50970c696bbe8b602ec38a748))
* download fixtures from the web ([1258c2b](https://github.com/unraid/api/commit/1258c2bc1813f0fa3cd52b4932302ad12b4edd01))
* enable sandbox in dev mode ([4536d70](https://github.com/unraid/api/commit/4536d7092d77c68f5a996fd63bf74ce6e64f5efe))
* enable sandbox with developer command ([c354d48](https://github.com/unraid/api/commit/c354d482283295547afeb99c5e110b0181197c44))
* enable token sign in with comma separated subs in myservers.config ([ebed5bd](https://github.com/unraid/api/commit/ebed5bddea1445d9aaaee60d54758dc74b77271e))
* exit cli after running command ([04bf528](https://github.com/unraid/api/commit/04bf528616fcbdf916916734a12d5fd32db9a06d))
* extensive file checking ([ab881c8](https://github.com/unraid/api/commit/ab881c8aed8dd4aa9fd71c32b50d3514d1496fa5))
* fallback to local ([a2579c2](https://github.com/unraid/api/commit/a2579c2a7f80f54b4cc61533aec9ecc41a7e7f54))
* faster failure logic ([b439434](https://github.com/unraid/api/commit/b439434f1574e174fcf23f3a5f5b8df8e092eb1e))
* fix docusaurus build + update snapshot ([23b27bd](https://github.com/unraid/api/commit/23b27bd63ea99f4137538eab40501daa67d7e3f5))
* force linting on build ([43e6639](https://github.com/unraid/api/commit/43e663998a55e83c142067cb64ae7a331395fe68))
* generate key one time ([afe53c3](https://github.com/unraid/api/commit/afe53c30ea9987e6d8728faa2cb7291f8a126ecb))
* glob for files ([3fe281f](https://github.com/unraid/api/commit/3fe281f1ae28e3cbc089b5244a6ae2863b20adcb))
* hypervisor async imports ([32686ca](https://github.com/unraid/api/commit/32686ca4f0c25c43c6a9f7162bb8179b39e58f7e))
* ignore generated code ([68265a2](https://github.com/unraid/api/commit/68265a26efa588b60001310b9a11b398f04ae88f))
* improve packing ([9ef02d5](https://github.com/unraid/api/commit/9ef02d53666b70d41fdd186364808deac715e1ff))
* initial patcher implementation using the diff tool ([c87acbb](https://github.com/unraid/api/commit/c87acbb146c2e4e30997c964cd8be325dee68cea))
* initial setup of permissions on keys ([#1068](https://github.com/unraid/api/issues/1068)) ([cf0fa85](https://github.com/unraid/api/commit/cf0fa850954ea2f018e338a132149f872b966df4))
* initial version of modification service ([b80469d](https://github.com/unraid/api/commit/b80469d38e519a7ba0e6eae636cda2a821e2d465))
* inject after form ([a4b276f](https://github.com/unraid/api/commit/a4b276f7874580bbf9827025730777715c9983da))
* kill timeout extended ([22d4026](https://github.com/unraid/api/commit/22d40264a02672a818053b5280d63a03ff7336b9))
* log size and only tar files ([731f2f8](https://github.com/unraid/api/commit/731f2f8e77a77b544a7f526c78aabfacca71eee4))
* logrotate test ([4504c39](https://github.com/unraid/api/commit/4504c39a2bbcf51385578b69a9fdc7b81a950e98))
* manually install libvirt in build process to ensure it is included in the final build ([e695481](https://github.com/unraid/api/commit/e695481363f0d5d7add9d0e0d50d1e113b3024f6))
* more pm2 fixes ([8257bdf](https://github.com/unraid/api/commit/8257bdff3624211ee645349abdec303bf271538e))
* move fixtures into __test__ folder ([22a901d](https://github.com/unraid/api/commit/22a901de9b0c274d3f75ed4b4618cd6cd90324ba))
* myservers_fb keepalive location ([e07e7f3](https://github.com/unraid/api/commit/e07e7f335c8ea4a73966ada90c26b7c82dbb025e))
* only write config when a specific config update action occurs ([ec29778](https://github.com/unraid/api/commit/ec29778e37a50f43eb164991bcf2a6ff9c266033))
* properly read log level from environment ([b5151e9](https://github.com/unraid/api/commit/b5151e9ba76a6814e24e8da34e8a3c1bf1cc2144))
* public index ([f0641ea](https://github.com/unraid/api/commit/f0641ea7ca0919884dc3b8642c2e6694398e3246))
* remove sso if disabled on Unraid-API start ([3bc407c](https://github.com/unraid/api/commit/3bc407c54e8e7aeadebd9ac223d71f21ef97fca1))
* remove sso user command ([bbd809b](https://github.com/unraid/api/commit/bbd809b83826e81eef38a06e66f3393e4f83e81e))
* remove sso user options ([e34041f](https://github.com/unraid/api/commit/e34041f86ef7ab6cf5e2fdf7efb86458d190edc1))
* remove unused config sections ([f0b9c4f](https://github.com/unraid/api/commit/f0b9c4f44ab0ee8f75bf96fde2413988ef4f6a8c))
* remove unused fields ([d2d0f7c](https://github.com/unraid/api/commit/d2d0f7cd9acb53ea2372245d7ef669c7ca24ee8a))
* remove unused vars ([0507713](https://github.com/unraid/api/commit/0507713972e344ad47bd077554d5888269669e9c))
* rename api key resource back to api_key ([ee9666b](https://github.com/unraid/api/commit/ee9666b317d7feb5c15d53e2a6b902c7771c8c7a))
* rename modification file ([70a93f2](https://github.com/unraid/api/commit/70a93f2cc63e0e62242be6fe1a717515a6fbec85))
* reorder index ([858553f](https://github.com/unraid/api/commit/858553f0debb6424ae0614640b82a050c33f175a))
* restart the API when an SSO user is added ([a6b0c90](https://github.com/unraid/api/commit/a6b0c906a423df048401750943f02dfdc9bc2619))
* restoring sso error ([234bf7d](https://github.com/unraid/api/commit/234bf7dfa4b0be88b6cc13996d8f29ec819da26e))
* revert local api key value ([ff40e7a](https://github.com/unraid/api/commit/ff40e7ae392052d3d9e1b084c5f4851e8ebd529e))
* rollback if patch exists before applying ([c2f4e8d](https://github.com/unraid/api/commit/c2f4e8d4e5c758601bd20ba491fd077b434ba45e))
* secondary changes ([d75331a](https://github.com/unraid/api/commit/d75331a67e3566875ce8642fce80195e79932a4c))
* service tests for modifier service ([08c1502](https://github.com/unraid/api/commit/08c150259f2b4630d973803f4edff69c8bf0ec3a))
* session issues ([5981693](https://github.com/unraid/api/commit/5981693abd605337f9174ba4c85fd1bfc243edeb))
* shared call to createPatch ([eb3e263](https://github.com/unraid/api/commit/eb3e263fb32a748bfa06ec6d119ee51d242707cf))
* simplify docs ([d428030](https://github.com/unraid/api/commit/d428030b806f55b62421559d434fc723786b03ad))
* style improvements ([b0f395e](https://github.com/unraid/api/commit/b0f395ef76f11047eaa13091df277df0459e9d8f))
* swap to async exit hook ([4302f31](https://github.com/unraid/api/commit/4302f316820a109c76408092994727b2dc030a15))
* switch to nest-commander ([1ab2ab5](https://github.com/unraid/api/commit/1ab2ab5b58a1f49cd6b05aaa84bfeced49d68e8e))
* try catch restart ([89abee6](https://github.com/unraid/api/commit/89abee680bdbdaa9946ddb991f0e6b5ada9ccdf7))
* **ui:** webgui-compatible web component library ([#1075](https://github.com/unraid/api/issues/1075)) ([1c7b2e0](https://github.com/unraid/api/commit/1c7b2e091b0975438860a8e1fc3db5fd8d3fcf93))
* unnecessary comment ([0c52256](https://github.com/unraid/api/commit/0c5225612875b96319b28ef447db69ecab15cfda))
* unraid single sign on with account app ([5183104](https://github.com/unraid/api/commit/5183104b322a328eea3e4b2f6d86fd9d4b1c76e3))
* update packageManager field for pnpm ([8d5db7a](https://github.com/unraid/api/commit/8d5db7a9bfdf528e2d58b20cc62434ea5929d24f))
* upgrade dependencies ([0a0cac3](https://github.com/unraid/api/commit/0a0cac3da74c2fe20f7100a9ad5d1caafa74b157))
* use execa for start and stop ([46ab014](https://github.com/unraid/api/commit/46ab0144d41b425015487c251c1884744223ba29))
* use zod to parse config ([19cf1be](https://github.com/unraid/api/commit/19cf1be079f2ccb9e0cfa10f2fb97a18f15c5729))
* validate token format in both PHP and CLI ([6ef05a3](https://github.com/unraid/api/commit/6ef05a3d7770f799e7d587c2cef8d29f6058bee1))
* **web:** add delete all notifications button to archive view in notifications sidebar ([3bda9d6](https://github.com/unraid/api/commit/3bda9d6a4ca01cc5580012b0133e72929d6dab40))
* **web:** enhance notifications indicator in UPC ([#950](https://github.com/unraid/api/issues/950)) ([6376848](https://github.com/unraid/api/commit/63768486e4ec64ab32666a26adf96f4db4a53e81))
* **web:** pull date format from display/date and time settings ([b058067](https://github.com/unraid/api/commit/b058067b628ca7866a9ba0a6c4c5e4d5505d98cb))
* **web:** rm api-key validation from connect sign in ([#986](https://github.com/unraid/api/issues/986)) ([7b105d1](https://github.com/unraid/api/commit/7b105d18678e88a064f0643d6e857704789e0ee8))
* zod config no longer any ([c32c5f5](https://github.com/unraid/api/commit/c32c5f57127b9469bde8806d78dc364562e73d9f))
## [4.6.1](https://github.com/unraid/api/compare/v4.6.0...v4.6.1) (2025-04-03)
### Bug Fixes
* allow concurrent testing with a shared patcher instance ([623846e](https://github.com/unraid/api/commit/623846ef46eb24a32c62516de58e8bc5d0219833))
* **api:** append time to formatted date when a custom date format is selected ([0ac8ed9](https://github.com/unraid/api/commit/0ac8ed9d9e7e239e471eedf466832aed0270d123))
* **api:** change log output location for diagnostic compatibility ([#1130](https://github.com/unraid/api/issues/1130)) ([cba1551](https://github.com/unraid/api/commit/cba155138379d47bc3151c7c27d745ba6a345d83))
* **api:** delay pm2 start until server has booted ([bd3188e](https://github.com/unraid/api/commit/bd3188efea4d3656994ffae32bd53f821c96358d))
* **api:** exclude duplicates from legacy script in archive retrieval ([8644e13](https://github.com/unraid/api/commit/8644e130979ed8740c5a8da0b3984266e2b3684c))
* **api:** improve defaults in PM2 service ([#1116](https://github.com/unraid/api/issues/1116)) ([57526de](https://github.com/unraid/api/commit/57526dede69e3a6547d05183e43c5b36dd1cae89))
* **api:** logrotate modification & permissions ([#1145](https://github.com/unraid/api/issues/1145)) ([5209df2](https://github.com/unraid/api/commit/5209df2776e1a985e82bedc655fe28acf1fd0bde))
* **api:** make cookie recognition during websocket connection more ([353e012](https://github.com/unraid/api/commit/353e012db8ab5280863f32392c520b4a330c13cc))
* **api:** pm2 start script & limit auto restarts ([#1040](https://github.com/unraid/api/issues/1040)) ([ebcd347](https://github.com/unraid/api/commit/ebcd3479e735724626ffc6907c338d5080898bee))
* **api:** retry mothership connection up to 3x before logout ([#1069](https://github.com/unraid/api/issues/1069)) ([c27bb1b](https://github.com/unraid/api/commit/c27bb1be4c7a9ab201585586f3bc5e4afa1c7791))
* **api:** sanitize incoming user session id's ([f5e3424](https://github.com/unraid/api/commit/f5e3424b79702e8f959b5519e83370a9e1d2033b))
* **api:** slow init of unraid-api cli ([#1022](https://github.com/unraid/api/issues/1022)) ([5dbbae7](https://github.com/unraid/api/commit/5dbbae796792a62234497d056eac019aa084b21c))
* **api:** update deploy-dev script to dist instead of src ([55cce09](https://github.com/unraid/api/commit/55cce09e65521762a6fe388d5b9b88ace1337c26))
* **api:** validate cookie session data ([491f680](https://github.com/unraid/api/commit/491f680607ce7244d9e47a457e44cde711fbe00c))
* apply and rollback error handling ([e22191b](https://github.com/unraid/api/commit/e22191bc77bc09f5c6c4ad57e5073829cf966ba4))
* authorization type error ([#987](https://github.com/unraid/api/issues/987)) ([7a4799e](https://github.com/unraid/api/commit/7a4799e9cd4caef6acfc3661d205a377fcf499ab))
* back to default configs ([b5711c9](https://github.com/unraid/api/commit/b5711c91284072991bcf409ac6126cd4b46afc7c))
* backup restore formatting ([15210f6](https://github.com/unraid/api/commit/15210f64b0938ec884a3ef4379d245c661eab9a3))
* basic test fixed ([2f38035](https://github.com/unraid/api/commit/2f38035520ca0fe796c981d08b9136d89ffc5888))
* better js file handling ([ddf160e](https://github.com/unraid/api/commit/ddf160e878a352842e813154b607945ccc7b4081))
* better loader functionality and error handling ([8a57d2d](https://github.com/unraid/api/commit/8a57d2dccbcb9c2effc5df5d8c69ad02713de24a))
* cleaner logs for starting API ([79f26ef](https://github.com/unraid/api/commit/79f26ef251cb42e7f2106d00c6c05e2bf17b8227))
* clearer error messaging ([e373849](https://github.com/unraid/api/commit/e37384966c5b9079bb507052dcaba56232c1c42a))
* code review feedback ([c66079e](https://github.com/unraid/api/commit/c66079e9a8e0ef47e5054118d0581bec708ac604))
* completion script registration ([05c8c9b](https://github.com/unraid/api/commit/05c8c9bf078ece2061ad8ae32497f52b8c9b94dc))
* connect key role ([2dcfc1c](https://github.com/unraid/api/commit/2dcfc1c19a1d085df84f0b1b50c096e3220205dd))
* create api key for connect on startup ([58329bc](https://github.com/unraid/api/commit/58329bc29521ebc26b27ee20013ac3926c5088c2))
* create api key permissions ([cefb644](https://github.com/unraid/api/commit/cefb644bd7fa513f553ca0ca4c49f0fb42a74112))
* create connect key ([6b1ab7b](https://github.com/unraid/api/commit/6b1ab7b74ae1d2938fa9105180a5f66e9604fd41))
* cwd on ecosystem.config.json ([dfd0da4](https://github.com/unraid/api/commit/dfd0da4ca23078f6de2e54d5e5bd6cba06334abc))
* default overwrite false test ([cf59107](https://github.com/unraid/api/commit/cf59107e568d91be684176335db5300bee9be865))
* delete .original files ([a9eb21a](https://github.com/unraid/api/commit/a9eb21aac0f373990aaa3f7a99731612540533cf))
* deprecated version warning ([89d0bd2](https://github.com/unraid/api/commit/89d0bd2e6da35fb1e8d95627d38edb54f82e0c6b))
* **deps:** update all non-major dependencies ([#1158](https://github.com/unraid/api/issues/1158)) ([45ebc8b](https://github.com/unraid/api/commit/45ebc8b6e07c53ad3eee28d5cf8ac9cd0d827754))
* **deps:** update apollo graphql packages ([7b1ee99](https://github.com/unraid/api/commit/7b1ee9940cca46e563bb79c7056996315f9decc5))
* **deps:** update dependency @apollo/client to v3.12.6 ([bb7800a](https://github.com/unraid/api/commit/bb7800a8c088705fd8310671a9896cbe9b0184e5))
* **deps:** update dependency @apollo/client to v3.12.9 ([6607cf2](https://github.com/unraid/api/commit/6607cf20c10a091d466c6a8031eebc17feb3e3fc))
* **deps:** update dependency @graphql-tools/load-files to v7.0.1 ([4e5c724](https://github.com/unraid/api/commit/4e5c7242e43cc356f1c69adcfcd25b57896af476))
* **deps:** update dependency @nestjs/schedule to v4.1.2 ([faf0de5](https://github.com/unraid/api/commit/faf0de5a19256efb83dc45a484e3cba65596ccd7))
* **deps:** update dependency chokidar to v4.0.3 ([d63a93c](https://github.com/unraid/api/commit/d63a93c55004d17b6d17634c55ffbc5670ebbec7))
* **deps:** update dependency dockerode to v4 ([#830](https://github.com/unraid/api/issues/830)) ([c331ecd](https://github.com/unraid/api/commit/c331ecd50c4910fd6c35e5ad92b3f676d552febc))
* **deps:** update dependency dotenv to v16.4.7 ([c66a650](https://github.com/unraid/api/commit/c66a6502b027853046d126a14ddee870ffabd10c))
* **deps:** update dependency execa to v9.5.2 ([d487c90](https://github.com/unraid/api/commit/d487c90ccc20162c76f0cdf49a736c1fee4271bd))
* **deps:** update dependency express to v4.21.2 ([a070306](https://github.com/unraid/api/commit/a07030684c8777e47eb4a51be0ea680b7f217e74))
* **deps:** update dependency got to v14.4.5 ([975a47c](https://github.com/unraid/api/commit/975a47c7d47841c49443f46264feb54abf53698c))
* **deps:** update dependency graphql-ws to v5.16.2 ([25d8f08](https://github.com/unraid/api/commit/25d8f085b67c2e53876d837c739214dc874116b8))
* **deps:** update dependency ini to v4.1.3 ([4c88cbe](https://github.com/unraid/api/commit/4c88cbee4b2d5f6717241dadac23bfe90ce15193))
* **deps:** update dependency node-window-polyfill to v1.0.4 ([8bfa88f](https://github.com/unraid/api/commit/8bfa88f4bc932eb82dd9b33a494811ea15764758))
* **deps:** update dependency openid-client to v6.1.7 ([0f50517](https://github.com/unraid/api/commit/0f50517a8544e1eb9b08ad1b3f05f798491b7f23))
* **deps:** update dependency p-retry to v6.2.1 ([c6f3241](https://github.com/unraid/api/commit/c6f324155019e066701723a57b642c6e3ba8332d))
* **deps:** update dependency pm2 to v5.4.3 ([a754090](https://github.com/unraid/api/commit/a75409026dd4e3d9ed120802012b67b179327448))
* **deps:** update dependency uuid to v11.0.5 ([7e3398b](https://github.com/unraid/api/commit/7e3398b2efabf1a5407d6e20c165eb4923b3bab2))
* **deps:** update graphql-tools monorepo ([cd7e2fe](https://github.com/unraid/api/commit/cd7e2feea199276a1d431cf355e54e12e5960d9a))
* **deps:** update graphqlcodegenerator monorepo ([0446c59](https://github.com/unraid/api/commit/0446c5924a6a9dd15b875628ca0f1197cfe521c4))
* **deps:** update graphqlcodegenerator monorepo ([15c789d](https://github.com/unraid/api/commit/15c789dbb34b85bed55c2731fb8ae8260f5f311f))
* **deps:** update nest monorepo to v10.4.15 ([07b1ea9](https://github.com/unraid/api/commit/07b1ea9a10634a597909ae1d237cc3b1e7f959b7))
* **deps:** update nest-graphql monorepo to v12.2.2 ([91aabd9](https://github.com/unraid/api/commit/91aabd9ffbfb8c2ceb4110217dfc05de8859077d))
* do not process.exit on restart or stop command ([933575f](https://github.com/unraid/api/commit/933575fc2badbb09b3a9d3c66724e37a9ee246f2))
* don't check code for execa ([508a5eb](https://github.com/unraid/api/commit/508a5eb49d9514dca9953317d9fa93314fe63e4c))
* dont remove login file without a backup presetn ([0370e4f](https://github.com/unraid/api/commit/0370e4f7ea3e3df0d2264264324d8e53ffc0c086))
* ensure directory exists before making connect key ([9e27ec9](https://github.com/unraid/api/commit/9e27ec98b68a49bdd6dc4b03de8c0cc3a1470a5e))
* excess spacing in api-key.service ([1deb002](https://github.com/unraid/api/commit/1deb0023287a39d40e52e89c515a28e62352f62c))
* extra log line ([1183063](https://github.com/unraid/api/commit/1183063aa7063afd8222def18f5e1fd6077e8c88))
* extra spacing in config.ts ([f3ee7be](https://github.com/unraid/api/commit/f3ee7be80f2c60266fbb13597a70f0a389fb577f))
* file modification service fixes ([aa5b3f4](https://github.com/unraid/api/commit/aa5b3f4e47ed88df23af00dfcccb7b64786b6231))
* find by key, not ID ([3c3fa1e](https://github.com/unraid/api/commit/3c3fa1e27cfabbe6926c3da8870751397eed1def))
* fix libvirt bindings ([#1167](https://github.com/unraid/api/issues/1167)) ([5817e5d](https://github.com/unraid/api/commit/5817e5d4b1697bbdfaa1984ccd650a232233cc15))
* forced restarting on commands ([925866d](https://github.com/unraid/api/commit/925866d389e337fcb8c249ead929e1f65854465b))
* format authrequest mod as other files ([180a81d](https://github.com/unraid/api/commit/180a81dbae8e749eae237fc8cee2950c790eedf0))
* formatting issue ([42ca969](https://github.com/unraid/api/commit/42ca9691f7547a4340501863c1882efc0aee4c60))
* initial feedback about report addressed ([5dee09c](https://github.com/unraid/api/commit/5dee09c77ad375de2eca59f650e5fea2070087b5))
* install as-integrations/fastify ([ff4546d](https://github.com/unraid/api/commit/ff4546d6692d2a4799f2dbeef0d5e5c6bac62561))
* length ([83579f1](https://github.com/unraid/api/commit/83579f1fbd03ffe929d009c20d214b4de62835c6))
* lint ([0f218b8](https://github.com/unraid/api/commit/0f218b8b72e397734823efab8f2141973a3a80ce))
* lint ([82bca54](https://github.com/unraid/api/commit/82bca54c594265ddf23a298691bd7ef6d4b47f32))
* lint ([ceb443d](https://github.com/unraid/api/commit/ceb443da15d177a950c36af61b93a7126cf4ca85))
* lint ([da04e7c](https://github.com/unraid/api/commit/da04e7ce0873d7802a936952d91e9867f0868a6e))
* lint ([7d87f0e](https://github.com/unraid/api/commit/7d87f0eee23dfa0f391fd342d38ed9084f18d8d4))
* logrotate error ([8c64dd2](https://github.com/unraid/api/commit/8c64dd2f2c65aa83ce0e2d501357ee595c976e56))
* mock ensureDirSync ([7e012e6](https://github.com/unraid/api/commit/7e012e6a2eb96ccddf5a1f69d7580b4bdfe7a0a9))
* more generic test ([0f651db](https://github.com/unraid/api/commit/0f651dbf61a1822b492aa80030f0bc231bc6f606))
* only instantiate service one time ([933dc81](https://github.com/unraid/api/commit/933dc81b6c50db5a33f586f7094e1ea524b9a9fa))
* only toast unread notifications, not archived ones ([cc59be6](https://github.com/unraid/api/commit/cc59be6cb3efc71226ee50f9f04e37a2e4b50de6))
* padding and glob function issues ([1d3f2eb](https://github.com/unraid/api/commit/1d3f2eb8213115c3385ac2d29ee8f53560347ba8))
* patch-utils unused ([047808d](https://github.com/unraid/api/commit/047808dce0cd9e9b4b273a9124dbd45ca9446208))
* paths now correct, better download logic ([16db2d9](https://github.com/unraid/api/commit/16db2d908dcb2c65508b367712c51bf9872a95e5))
* properly log error with template string ([3781f1f](https://github.com/unraid/api/commit/3781f1f41c7f0eef604daee0402ed9a2bb27cd46))
* pull token from query not params ([2e827e7](https://github.com/unraid/api/commit/2e827e7cabe4a6a069d4e8779015e5896d8a1d1d))
* remove devDependencies from output package json ([294869b](https://github.com/unraid/api/commit/294869bbea7f8a1863f8aafae6b074330e057679))
* remove isNaN in favor of number.isNaN ([03e3a46](https://github.com/unraid/api/commit/03e3a46092db613281176b88cae284f6448027c6))
* remove memory key generation ([b84db13](https://github.com/unraid/api/commit/b84db1322104c7f26f7b6378f25a2757b3010c6d))
* remove unused constructor ([e0e2a7b](https://github.com/unraid/api/commit/e0e2a7b41c5e599ed4cf3bf49c7faea3b71f0b70))
* remove usage of Role.UPC ([d1e2f6e](https://github.com/unraid/api/commit/d1e2f6e0b391cb4eca75a0997b41cb99a9953d42))
* report issues + pm2 issues ([28c383e](https://github.com/unraid/api/commit/28c383e1d111d4ac4226d7d966533ba80ca5d9a1))
* reset config to be closer to default ([b7fbb0b](https://github.com/unraid/api/commit/b7fbb0b6af0453f5f6a17087bb7e68c393b9fe3f))
* resource busy when removing all subdirectories ([29936c9](https://github.com/unraid/api/commit/29936c90938fb83bc2f154315ca63a9d7cc98552))
* restart command elegant ([296117b](https://github.com/unraid/api/commit/296117b51aac8a4c15366f2271af858868b6e071))
* revert changelog ([e9d47ca](https://github.com/unraid/api/commit/e9d47caf181148317e5ba8f0d11a433b09add0e3))
* revert dockerode upgrade ([#1140](https://github.com/unraid/api/issues/1140)) ([a74a379](https://github.com/unraid/api/commit/a74a379a93fd15a315e31191de1bf69c5879f8a6))
* revert myservers.cfg ([d0896f3](https://github.com/unraid/api/commit/d0896f3ef8aebdd9c76d805ed6a35b4a5d5a1b08))
* sandbox defaults in dev mode wrong ([2a24919](https://github.com/unraid/api/commit/2a2491936cf85013be836450ab7ed0cc11207e11))
* sequential test execution for generic-modification ([79ee1f7](https://github.com/unraid/api/commit/79ee1f7552cee47c6f5a8eb5942468292212e2f2))
* shell path to unraid-api ([15d11e4](https://github.com/unraid/api/commit/15d11e477bb2a08d785a7b22bd51900279a55508))
* simplify api setup index ([701b1fb](https://github.com/unraid/api/commit/701b1fbd9096c9675475062eaf32a2cbfb0567b9))
* simplify upcoming features ([8af79b2](https://github.com/unraid/api/commit/8af79b27501b42e1c1f7697756a56a9001000d8f))
* staging build issues ([e6bcb8d](https://github.com/unraid/api/commit/e6bcb8de7daee463f7ac0dbf977e085e108302ba))
* start command simplification ([e1faf3a](https://github.com/unraid/api/commit/e1faf3aa8db5973eb1bb0ea7a4844f820504618d))
* stop command exits ([2dbfdb6](https://github.com/unraid/api/commit/2dbfdb670a773114c0fdc68c7cf9d29fa4e28a9b))
* swap to placeholder key ([d1864d0](https://github.com/unraid/api/commit/d1864d0020ed56ab2368d23b48604b55cff21ae4))
* test issues ([e4b55b1](https://github.com/unraid/api/commit/e4b55b133bb2dc4bf2ccfd6fd2fc244daadbea53))
* test simplification to ensure no redownloads ([e07dad3](https://github.com/unraid/api/commit/e07dad3a6947aa186c4ac03032b5b3813cd046b6))
* tests ([25c1c1a](https://github.com/unraid/api/commit/25c1c1a55a3fb32b76bf5cb7257a4ba44f717a89))
* tests and validate token clears screen ([7f48ddd](https://github.com/unraid/api/commit/7f48dddcd2e2ea1ae3a55ecc54d5ac274535b714))
* type for generic test ([e856535](https://github.com/unraid/api/commit/e85653592a9d6eadcd0be89bf90a96c5d313fda3))
* unit test issues ([c58f7a7](https://github.com/unraid/api/commit/c58f7a7f246902c7d354eb51d1c87c8ea3b636a3))
* unit tests updated ([9548505](https://github.com/unraid/api/commit/954850535bec6b09aaf66b01d3ee749c8a22de5d))
* unneeded await on api-key service ([0325be7](https://github.com/unraid/api/commit/0325be757ee4c04b5c23365ff592f521a492595b))
* unused imports ([a5447aa](https://github.com/unraid/api/commit/a5447aa2f4c99968651fa3750d6bf0e8d68678de))
* update tests ([d0696a9](https://github.com/unraid/api/commit/d0696a93810893ccd6c676df1c639ca279992428))
* use an enum and defaults for sandbox value ([eb56483](https://github.com/unraid/api/commit/eb56483ba2693944d39f4409c91b75ee82a7d30b))
* use batchProcess ([ffbb9d7](https://github.com/unraid/api/commit/ffbb9d7750568bfa849d21e051503d1fcca5355f))
* use cwd when running application ([e016652](https://github.com/unraid/api/commit/e01665264b6f45366cdacf60c0f3553adfbd85d3))
* use placeholder in test API key ([c6b7755](https://github.com/unraid/api/commit/c6b7755214de8bedd5c0f2735473c2a559b1e26f))
* watch all events to load keys ([59ca177](https://github.com/unraid/api/commit/59ca17787e4d36113b0a8c5ef2117acfc491c49c))
* **web:** name of toaster component ([e093242](https://github.com/unraid/api/commit/e093242d20ddd72567396f4a53238250f2199a64))
* don't mv deploy on prod release ([9568aab](https://github.com/unraid/api/commit/9568aabd17fbab9e7e2f06f723ee57dc2026583c))
## [4.6.0](https://github.com/unraid/api/compare/v4.5.0...v4.6.0) (2025-04-03)
### Miscellaneous Chores
### Features
* release 4.1.2 ([dbab290](https://github.com/unraid/api/commit/dbab290b429f9eff8fa903d193de2bd02bb392bd))
* add gui settings field for sso users ([#1310](https://github.com/unraid/api/issues/1310)) ([5ba3fa6](https://github.com/unraid/api/commit/5ba3fa67a26828f29e1e234c6838e7beaa3fdff3))
### Bug Fixes
* build ([ed67af9](https://github.com/unraid/api/commit/ed67af956802eec95845519997bc15b32c84c6ee))
* **plugin:** flaky masking of benign warning during pnpm install ([#1313](https://github.com/unraid/api/issues/1313)) ([1f10b63](https://github.com/unraid/api/commit/1f10b63c8b015e9a2527f79e15a7042feb2d2aca))
## [4.5.0](https://github.com/unraid/api/compare/v4.4.1...v4.5.0) (2025-04-02)
### Features
* add webgui theme switcher component ([#1304](https://github.com/unraid/api/issues/1304)) ([e2d00dc](https://github.com/unraid/api/commit/e2d00dc3464f9663062ac759a8aad85e61804b91))
* api plugin system & offline versioned dependency vendoring ([#1252](https://github.com/unraid/api/issues/1252)) ([9f492bf](https://github.com/unraid/api/commit/9f492bf2175b1b909d3bec079ce901ba34765eb7))
* **api:** add `unraid-api --delete` command ([#1289](https://github.com/unraid/api/issues/1289)) ([2f09445](https://github.com/unraid/api/commit/2f09445f2ed6b23cd851ca64ac5b84cfde3cbd50))
* basic array controls ([#1291](https://github.com/unraid/api/issues/1291)) ([61fe696](https://github.com/unraid/api/commit/61fe6966caf973eec3d74c67741302dd4b507134))
* basic docker controls ([#1292](https://github.com/unraid/api/issues/1292)) ([12eddf8](https://github.com/unraid/api/commit/12eddf894e1808b61f5d4e007f3a7a39a3f2e4d6))
* copy to webgui repo script docs + wc build options ([#1285](https://github.com/unraid/api/issues/1285)) ([e54f189](https://github.com/unraid/api/commit/e54f189630f70aeff5af6bdef4271f0a01fedb74))
### Bug Fixes
* additional url fixes ([4b2763c](https://github.com/unraid/api/commit/4b2763c7f9d8b85d5b0ce066dfc9a9a80a115658))
* **api:** redirect benign pnpm postinstall warning to log file ([#1290](https://github.com/unraid/api/issues/1290)) ([7fb7849](https://github.com/unraid/api/commit/7fb78494cb23630f60a889e6252fc06754e14ef9))
* **deps:** update dependency chalk to v5 ([#1296](https://github.com/unraid/api/issues/1296)) ([6bed638](https://github.com/unraid/api/commit/6bed63805ff026be98a8e20c4d8a37cd47048357))
* **deps:** update dependency diff to v7 ([#1297](https://github.com/unraid/api/issues/1297)) ([3c6683c](https://github.com/unraid/api/commit/3c6683c81422a088c13e9545aaecececd78b8628))
* disable all config watchers ([#1306](https://github.com/unraid/api/issues/1306)) ([5c1b435](https://github.com/unraid/api/commit/5c1b4352cf71d8525f667822f8ca202e2934f463))
* extract callbacks to library ([#1280](https://github.com/unraid/api/issues/1280)) ([2266139](https://github.com/unraid/api/commit/226613974258f15d39932de94316a54aec2e29d2))
* OEM plugin issues ([#1288](https://github.com/unraid/api/issues/1288)) ([d5a3d0d](https://github.com/unraid/api/commit/d5a3d0dfac214fc433c2c0aec578de564a990dd4))
* replace files lost during pruning ([d0d2ff6](https://github.com/unraid/api/commit/d0d2ff65ed2d51223414e50bb1c2ecf82e32a071))
## [4.4.1](https://github.com/unraid/api/compare/v4.4.0...v4.4.1) (2025-03-26)
### Bug Fixes
* .env.production from allowing console logs on build ([#1273](https://github.com/unraid/api/issues/1273)) ([32acc2d](https://github.com/unraid/api/commit/32acc2d27c8bb565b38a66d8233030de3711ea12))
* patch version override logic incorrect ([#1275](https://github.com/unraid/api/issues/1275)) ([6a59756](https://github.com/unraid/api/commit/6a597561a3e21c27fff8d4530cf59cf382eaa015))
## [4.4.0](https://github.com/unraid/api/compare/v4.3.1...v4.4.0) (2025-03-25)
### Features
* add ReplaceKey functionality to plugin ([#1264](https://github.com/unraid/api/issues/1264)) ([4aadcef](https://github.com/unraid/api/commit/4aadcef1ca6b45b44885f2d2a986874e86945d4f))
* downgrade page replace key check ([#1263](https://github.com/unraid/api/issues/1263)) ([8d56d12](https://github.com/unraid/api/commit/8d56d12f67d86d7015a358727bcb303eb511ac42))
* make log viewer component dynamic ([#1242](https://github.com/unraid/api/issues/1242)) ([e6ec110](https://github.com/unraid/api/commit/e6ec110fbf81b329b72ef350643bf3c76734290a))
* ReplaceKey functionality in Registration and Update pages ([#1246](https://github.com/unraid/api/issues/1246)) ([04307c9](https://github.com/unraid/api/commit/04307c977cfd4916753140e5a20811c561d2dfb2))
* UnraidCheckExec for Check OS Updates via UPC dropdown ([#1265](https://github.com/unraid/api/issues/1265)) ([5935a3b](https://github.com/unraid/api/commit/5935a3b3c2f69ee683146c3fcc798d72996633f8))
### Bug Fixes
* **deps:** update all non-major dependencies ([#1236](https://github.com/unraid/api/issues/1236)) ([7194f85](https://github.com/unraid/api/commit/7194f859ce0178116621b4bdf28db553b037940d))
* **deps:** update all non-major dependencies ([#1247](https://github.com/unraid/api/issues/1247)) ([20b0aeb](https://github.com/unraid/api/commit/20b0aeb9d7e621ec917c928135b2c867e07ce7a4))
* **deps:** update all non-major dependencies ([#1251](https://github.com/unraid/api/issues/1251)) ([33a1a1d](https://github.com/unraid/api/commit/33a1a1ddd2f228cf001bb492f9c76bb5bc6dc8a0))
* **deps:** update all non-major dependencies ([#1253](https://github.com/unraid/api/issues/1253)) ([53fec0e](https://github.com/unraid/api/commit/53fec0efaba8f3e2dcf5f2899e3099e0e12f5162))
* **deps:** update dependency @nestjs/passport to v11 ([#1244](https://github.com/unraid/api/issues/1244)) ([edc93a9](https://github.com/unraid/api/commit/edc93a921ea93d98b7c2de9a7fed2fed650365e8))
* **deps:** update dependency graphql-subscriptions to v3 ([#1209](https://github.com/unraid/api/issues/1209)) ([c14c85f](https://github.com/unraid/api/commit/c14c85fcf7ce920edd75d15fa9b3d556f452bb88))
* **deps:** update dependency ini to v5 ([#1217](https://github.com/unraid/api/issues/1217)) ([f27660f](https://github.com/unraid/api/commit/f27660f140acb647cab1dce162af0d49d5655fb6))
* **deps:** update dependency jose to v6 ([#1248](https://github.com/unraid/api/issues/1248)) ([42e3d59](https://github.com/unraid/api/commit/42e3d59107dd800351ee1f7d175c550465ebddb4))
* **deps:** update dependency marked to v15 ([#1249](https://github.com/unraid/api/issues/1249)) ([2b6693f](https://github.com/unraid/api/commit/2b6693f404a9a3405300637d2c55bd5b65c61f0b))
* **deps:** update dependency pino-pretty to v13 ([#1250](https://github.com/unraid/api/issues/1250)) ([85fb910](https://github.com/unraid/api/commit/85fb91059a0ad7728d766cd3b429857b3fd4bd08))
* **deps:** update dependency pm2 to v6 ([#1258](https://github.com/unraid/api/issues/1258)) ([04ad2bc](https://github.com/unraid/api/commit/04ad2bc9c8c1e5fd9622655ce9881bde17388246))
* **deps:** update dependency shadcn-vue to v1 ([#1259](https://github.com/unraid/api/issues/1259)) ([1a4fe8f](https://github.com/unraid/api/commit/1a4fe8f85f50cf34df6af2c0bf55efc305fa9fff))
* **deps:** update dependency vue-i18n to v11 ([#1261](https://github.com/unraid/api/issues/1261)) ([0063286](https://github.com/unraid/api/commit/0063286e29b9a7439e6acc64973a3152370c75c3))
* **deps:** update vueuse monorepo to v13 (major) ([#1262](https://github.com/unraid/api/issues/1262)) ([94caae3](https://github.com/unraid/api/commit/94caae3d87fbfb04dfe5633030e24acddbcc0f6b))
* make scripts executable when building the plugin ([#1255](https://github.com/unraid/api/issues/1255)) ([e237f38](https://github.com/unraid/api/commit/e237f38bc4646f13461938c03d566fef781ad406))
* node installation not persisting across reboots ([#1256](https://github.com/unraid/api/issues/1256)) ([0415cf1](https://github.com/unraid/api/commit/0415cf1252ed8c7fba32a65c031dc0d21e0f5a81))
* update configValid state to ineligible in var.ini and adjust rel… ([#1268](https://github.com/unraid/api/issues/1268)) ([ef8c954](https://github.com/unraid/api/commit/ef8c9548baef99010e2f26288af33a90167e5177))
## [4.3.1](https://github.com/unraid/api/compare/v4.3.0...v4.3.1) (2025-03-18)
### Bug Fixes
* stepper fixes ([#1240](https://github.com/unraid/api/issues/1240)) ([e7f6f5e](https://github.com/unraid/api/commit/e7f6f5e8315c50fd37193f7d7de2af3d370c18ea))
## [4.3.0](https://github.com/unraid/api/compare/v4.2.1...v4.3.0) (2025-03-18)
### Features
* update production release flow to validate less strictly ([#1238](https://github.com/unraid/api/issues/1238)) ([3afb203](https://github.com/unraid/api/commit/3afb203b856655e4ce7c9d709e30d3f2ebd64784))
## [4.2.1](https://github.com/unraid/api/compare/v4.2.0...v4.2.1) (2025-03-18)
### Bug Fixes
* **deps:** update all non-major dependencies ([#1192](https://github.com/unraid/api/issues/1192)) ([65b8db2](https://github.com/unraid/api/commit/65b8db2845a5f4234527a70b0625b1a88df5b2fe))
## [4.2.0](https://github.com/unraid/api/compare/v4.1.3...v4.2.0) (2025-03-18)
### Features
* add resolver for logging ([#1222](https://github.com/unraid/api/issues/1222)) ([2d90408](https://github.com/unraid/api/commit/2d9040801f044dc7a974e9737acdffbbdcae5e37))
* connect settings web component ([#1211](https://github.com/unraid/api/issues/1211)) ([653de00](https://github.com/unraid/api/commit/653de00d3761826c8f0a969be3cfb9253f2d3e43))
* improve local dev with install path ([#1221](https://github.com/unraid/api/issues/1221)) ([32c5b0a](https://github.com/unraid/api/commit/32c5b0a879e59a823d5dc7bf4b4b4e9d07d2f010))
* split plugin builds ([4d10966](https://github.com/unraid/api/commit/4d109669dba614328db068697d97d3ad424a6237))
* swap to absolute paths for css ([#1224](https://github.com/unraid/api/issues/1224)) ([6f9fa10](https://github.com/unraid/api/commit/6f9fa10c0909874a5964818f24ed28b79463aed2))
* update theme application logic and color picker ([#1181](https://github.com/unraid/api/issues/1181)) ([c352f49](https://github.com/unraid/api/commit/c352f4961885e16260d95b0c8be938009bcfc5e4))
* use patch version if needed on update check ([#1227](https://github.com/unraid/api/issues/1227)) ([6ed46b3](https://github.com/unraid/api/commit/6ed46b3b61432c51a58c741ead014c856671d839))
### Bug Fixes
* add INELIGIBLE state to ConfigErrorState enum ([#1220](https://github.com/unraid/api/issues/1220)) ([1f00212](https://github.com/unraid/api/commit/1f00212a7e663f29cbdeabf5663c9f398799b761))
* **api:** dynamix notifications dir during development ([#1216](https://github.com/unraid/api/issues/1216)) ([0a382ca](https://github.com/unraid/api/commit/0a382ca5b77ad6e7d5e5c6f35b11ac2dd2479d30))
* **api:** type imports from generated graphql types ([#1215](https://github.com/unraid/api/issues/1215)) ([fd02297](https://github.com/unraid/api/commit/fd02297971d88ac420887969313fbca570ffdc6d))
* **deps:** update dependency @nestjs/schedule to v5 ([#1197](https://github.com/unraid/api/issues/1197)) ([b1ff6e5](https://github.com/unraid/api/commit/b1ff6e553ed1391e8f450446088502fd6b9782c0))
* **deps:** update dependency @vueuse/core to v12 ([#1199](https://github.com/unraid/api/issues/1199)) ([d8b8339](https://github.com/unraid/api/commit/d8b8339d6c8cdebd468160fb17c4056ad5dffd4c))
* fix changelog thing again ([2426345](https://github.com/unraid/api/commit/24263459fc35d61065712d315a03fd425d98d328))
* fix invalid path to node with sh execution ([#1213](https://github.com/unraid/api/issues/1213)) ([d12448d](https://github.com/unraid/api/commit/d12448d75a6637fe1608e3e3807ecfd2a20f55c9))
* load tag correctly ([acd692b](https://github.com/unraid/api/commit/acd692b717b91d708fa93a2941ac4ee9ad544ac4))
* log errors ([629feda](https://github.com/unraid/api/commit/629feda5b8befd1677d38999a08c667717491442))
* one-command dev & web env files ([#1214](https://github.com/unraid/api/issues/1214)) ([8218fab](https://github.com/unraid/api/commit/8218fab98b53394171a4cc207432de01e95250ae))
* re-release fixed ([bb526b5](https://github.com/unraid/api/commit/bb526b5444ac6aaa832adee723513b98df4de423))
* recreate watcher on path change ([#1203](https://github.com/unraid/api/issues/1203)) ([5a9154e](https://github.com/unraid/api/commit/5a9154ebeadfbc6439e7aac6cf9fd2464acff6d0))
* update brand loading variants for consistent sizing ([#1223](https://github.com/unraid/api/issues/1223)) ([d7a4b98](https://github.com/unraid/api/commit/d7a4b9855f182588fded088bf9c5610b2f9967b7))
## [4.1.3](https://github.com/unraid/api/compare/v4.1.2...v4.1.3) (2025-02-21)
### Bug Fixes
* chown correctly ([#1185](https://github.com/unraid/api/issues/1185)) ([11b0441](https://github.com/unraid/api/commit/11b04417371ba77eddc12699db8575988d6deafc))
* create releases as drafts ([0adba3a](https://github.com/unraid/api/commit/0adba3ae3566ad84626a9ab1cf7d38edb24de69f))
* **deps:** update all non-major dependencies ([#1168](https://github.com/unraid/api/issues/1168)) ([443b608](https://github.com/unraid/api/commit/443b608163cdb64775d6758b8207cbe745f892f4))
* revert config ([c17db6d](https://github.com/unraid/api/commit/c17db6d7648c15f71cd2195530cd0c2d051db3f6))
* small modal window ([#1183](https://github.com/unraid/api/issues/1183)) ([2183965](https://github.com/unraid/api/commit/2183965757ded27a5a01a6e27c4b783c9434af2e))
## [4.1.2](https://github.com/unraid/api/compare/v4.1.2...v4.1.2) (2025-02-21)
### Features
* add api key creation logic ([81382bc](https://github.com/unraid/api/commit/81382bcf1d26364ad9c5445530f648209101cf91))
* add category.json ([c9e87e2](https://github.com/unraid/api/commit/c9e87e2e5b47a8801b7865ed586c803d0b470915))
* add command to package.json scripts ([0dfb07f](https://github.com/unraid/api/commit/0dfb07f9eb519e60441f4123423f65acfdffca3b))
* add csrf support to api & web components ([#999](https://github.com/unraid/api/issues/999)) ([19241ed](https://github.com/unraid/api/commit/19241ed55f5112f878b9890d8695badf7eb1c3eb))
* add description flag, remove console log, and update readme ([c416c30](https://github.com/unraid/api/commit/c416c30951de4ed6b8d7a8c014403772db1c2015))
* add developer docs ([#1128](https://github.com/unraid/api/issues/1128)) ([bb2e340](https://github.com/unraid/api/commit/bb2e340b68268d5121db650b27e8b2580c7966bb))
* add line about recommendation for sso command ([44727a8](https://github.com/unraid/api/commit/44727a8d1a7c16c566678da43119b17a6303e375))
* add log rotation ([f5c7ad9](https://github.com/unraid/api/commit/f5c7ad9221f80e4630e69f78d57f08f4c7252719))
* add logging around fixture downloads ([a1ce27b](https://github.com/unraid/api/commit/a1ce27b17c970657f52635600f0d13116523f928))
* add logrotate cron again ([4f85f66](https://github.com/unraid/api/commit/4f85f6687f920dae50277e726e2db2c3d946e867))
* add patch for auth-request.php ([ec6ec56](https://github.com/unraid/api/commit/ec6ec562f43aac9947de2e9c269181303f42b2db))
* add user with cli ([37458cd](https://github.com/unraid/api/commit/37458cd7408a1ad8aedca66a55ff13ac19ee30db))
* address log level feedback ([49774aa](https://github.com/unraid/api/commit/49774aae459797f04ef2866ca064050aa476ae91))
* allow csrf passing through querystring ([dba38c0](https://github.com/unraid/api/commit/dba38c0d149a77e4104c718c53d426330a17f2fa))
* allow deletion and creation of files with patches ([32c9524](https://github.com/unraid/api/commit/32c952402c25e8340b1c628b4d0fdc4816b28ade))
* always ensureDirectory for keys exists ([c6e9f80](https://github.com/unraid/api/commit/c6e9f804c58e44b46bce9f0da2260888544354cd))
* **api:** graphql sandbox on unraid servers ([#1047](https://github.com/unraid/api/issues/1047)) ([ec504f3](https://github.com/unraid/api/commit/ec504f39297c92b64d9d3cc2f8f482cc1f3a2e44))
* **api:** omit tz from sys time date format by default ([b2acde3](https://github.com/unraid/api/commit/b2acde3351d7afe18a2902e90b672537aadabffd))
* **api:** rm 2fa & t2fa from myservers config type ([#996](https://github.com/unraid/api/issues/996)) ([89e791a](https://github.com/unraid/api/commit/89e791ad2e6f0395bee05e3f8bdcb2c8d72305dd))
* async disk mapping ([bbb27e6](https://github.com/unraid/api/commit/bbb27e686897e4f9a0c926553d75aa046d7a8323))
* async hypervisor and FIXED vm listing ([e79f4dd](https://github.com/unraid/api/commit/e79f4ddbc7061c249efb8214a311bb629628f669))
* auto-docusaurus-prs ([#1127](https://github.com/unraid/api/issues/1127)) ([1147e76](https://github.com/unraid/api/commit/1147e762ae2fed6dea198fa38d6bcc514a1e66fb))
* begin building plugin with node instead of bash ([#1120](https://github.com/unraid/api/issues/1120)) ([253b65a](https://github.com/unraid/api/commit/253b65a85ab9c5f53d53ef265b41aa132678f278))
* better patch application ([a3e7daa](https://github.com/unraid/api/commit/a3e7daa6a6565ac81004ffd13da35d8b95b429cf))
* better pm2 calls, log lines ([338ce30](https://github.com/unraid/api/commit/338ce3061310dfc42ad5f65edacbe5272de4afc7))
* cleanup config entries ([943e73f](https://github.com/unraid/api/commit/943e73fa696b6ecec3227be914ab4962c4fee79d))
* cleanup disclaimer and command to add users ([6be3af8](https://github.com/unraid/api/commit/6be3af8d7569d9c413dd9349df52e3fa4cb4f631))
* cli Commands ([f8e5367](https://github.com/unraid/api/commit/f8e5367f3eb47daa5bcbd7711ae5835369502a1d))
* CLI options for adding and deleting users ([16bf6d4](https://github.com/unraid/api/commit/16bf6d4c27ae8fa8d6d05ec4b28ce49a12673278))
* coderabbit suggestion ([11ac36c](https://github.com/unraid/api/commit/11ac36c3616a90853d91467526fd39ecba17db88))
* configure PM2 on startup ([2b908f1](https://github.com/unraid/api/commit/2b908f100b9eefaccf2264d5ff9945667568acf0))
* convert to pnpm monorepo ([#1137](https://github.com/unraid/api/issues/1137)) ([8d89f8b](https://github.com/unraid/api/commit/8d89f8b20d6f3983d4e85b33827a857aa862db37))
* create key cli command logic and add to index command list ([9b2a62d](https://github.com/unraid/api/commit/9b2a62d642b0942e3787e4ddd582a66e40321ab2))
* csv validation ([84aae15](https://github.com/unraid/api/commit/84aae15a73014592c226fa3701e34e57c7b60b46))
* default value for option ([6513fc4](https://github.com/unraid/api/commit/6513fc49de61c836e1aabf32a874d7da7da18adb))
* disable casbin logging ([2518e7c](https://github.com/unraid/api/commit/2518e7c506f0d3aa9f44031d61dce95d9db0a4cf))
* docstrings ([b836ba7](https://github.com/unraid/api/commit/b836ba72516c554ee8973d69aaaa4ed35b465fa7))
* dont pass entire server state for privacy ([54e3f17](https://github.com/unraid/api/commit/54e3f17bd9e541f50970c696bbe8b602ec38a748))
* download fixtures from the web ([1258c2b](https://github.com/unraid/api/commit/1258c2bc1813f0fa3cd52b4932302ad12b4edd01))
* enable sandbox in dev mode ([4536d70](https://github.com/unraid/api/commit/4536d7092d77c68f5a996fd63bf74ce6e64f5efe))
* enable sandbox with developer command ([c354d48](https://github.com/unraid/api/commit/c354d482283295547afeb99c5e110b0181197c44))
* enable token sign in with comma separated subs in myservers.config ([ebed5bd](https://github.com/unraid/api/commit/ebed5bddea1445d9aaaee60d54758dc74b77271e))
* exit cli after running command ([04bf528](https://github.com/unraid/api/commit/04bf528616fcbdf916916734a12d5fd32db9a06d))
* extensive file checking ([ab881c8](https://github.com/unraid/api/commit/ab881c8aed8dd4aa9fd71c32b50d3514d1496fa5))
* fallback to local ([a2579c2](https://github.com/unraid/api/commit/a2579c2a7f80f54b4cc61533aec9ecc41a7e7f54))
* faster failure logic ([b439434](https://github.com/unraid/api/commit/b439434f1574e174fcf23f3a5f5b8df8e092eb1e))
* fix docusaurus build + update snapshot ([23b27bd](https://github.com/unraid/api/commit/23b27bd63ea99f4137538eab40501daa67d7e3f5))
* force linting on build ([43e6639](https://github.com/unraid/api/commit/43e663998a55e83c142067cb64ae7a331395fe68))
* generate key one time ([afe53c3](https://github.com/unraid/api/commit/afe53c30ea9987e6d8728faa2cb7291f8a126ecb))
* glob for files ([3fe281f](https://github.com/unraid/api/commit/3fe281f1ae28e3cbc089b5244a6ae2863b20adcb))
* hypervisor async imports ([32686ca](https://github.com/unraid/api/commit/32686ca4f0c25c43c6a9f7162bb8179b39e58f7e))
* ignore generated code ([68265a2](https://github.com/unraid/api/commit/68265a26efa588b60001310b9a11b398f04ae88f))
* improve packing ([9ef02d5](https://github.com/unraid/api/commit/9ef02d53666b70d41fdd186364808deac715e1ff))
* initial patcher implementation using the diff tool ([c87acbb](https://github.com/unraid/api/commit/c87acbb146c2e4e30997c964cd8be325dee68cea))
* initial setup of permissions on keys ([#1068](https://github.com/unraid/api/issues/1068)) ([cf0fa85](https://github.com/unraid/api/commit/cf0fa850954ea2f018e338a132149f872b966df4))
* initial version of modification service ([b80469d](https://github.com/unraid/api/commit/b80469d38e519a7ba0e6eae636cda2a821e2d465))
* inject after form ([a4b276f](https://github.com/unraid/api/commit/a4b276f7874580bbf9827025730777715c9983da))
* kill timeout extended ([22d4026](https://github.com/unraid/api/commit/22d40264a02672a818053b5280d63a03ff7336b9))
* log size and only tar files ([731f2f8](https://github.com/unraid/api/commit/731f2f8e77a77b544a7f526c78aabfacca71eee4))
* logrotate test ([4504c39](https://github.com/unraid/api/commit/4504c39a2bbcf51385578b69a9fdc7b81a950e98))
* manually install libvirt in build process to ensure it is included in the final build ([e695481](https://github.com/unraid/api/commit/e695481363f0d5d7add9d0e0d50d1e113b3024f6))
* more pm2 fixes ([8257bdf](https://github.com/unraid/api/commit/8257bdff3624211ee645349abdec303bf271538e))
* move fixtures into __test__ folder ([22a901d](https://github.com/unraid/api/commit/22a901de9b0c274d3f75ed4b4618cd6cd90324ba))
* myservers_fb keepalive location ([e07e7f3](https://github.com/unraid/api/commit/e07e7f335c8ea4a73966ada90c26b7c82dbb025e))
* only write config when a specific config update action occurs ([ec29778](https://github.com/unraid/api/commit/ec29778e37a50f43eb164991bcf2a6ff9c266033))
* properly read log level from environment ([b5151e9](https://github.com/unraid/api/commit/b5151e9ba76a6814e24e8da34e8a3c1bf1cc2144))
* public index ([f0641ea](https://github.com/unraid/api/commit/f0641ea7ca0919884dc3b8642c2e6694398e3246))
* remove sso if disabled on Unraid-API start ([3bc407c](https://github.com/unraid/api/commit/3bc407c54e8e7aeadebd9ac223d71f21ef97fca1))
* remove sso user command ([bbd809b](https://github.com/unraid/api/commit/bbd809b83826e81eef38a06e66f3393e4f83e81e))
* remove sso user options ([e34041f](https://github.com/unraid/api/commit/e34041f86ef7ab6cf5e2fdf7efb86458d190edc1))
* remove unused config sections ([f0b9c4f](https://github.com/unraid/api/commit/f0b9c4f44ab0ee8f75bf96fde2413988ef4f6a8c))
* remove unused fields ([d2d0f7c](https://github.com/unraid/api/commit/d2d0f7cd9acb53ea2372245d7ef669c7ca24ee8a))
* remove unused vars ([0507713](https://github.com/unraid/api/commit/0507713972e344ad47bd077554d5888269669e9c))
* rename api key resource back to api_key ([ee9666b](https://github.com/unraid/api/commit/ee9666b317d7feb5c15d53e2a6b902c7771c8c7a))
* rename modification file ([70a93f2](https://github.com/unraid/api/commit/70a93f2cc63e0e62242be6fe1a717515a6fbec85))
* reorder index ([858553f](https://github.com/unraid/api/commit/858553f0debb6424ae0614640b82a050c33f175a))
* restart the API when an SSO user is added ([a6b0c90](https://github.com/unraid/api/commit/a6b0c906a423df048401750943f02dfdc9bc2619))
* restoring sso error ([234bf7d](https://github.com/unraid/api/commit/234bf7dfa4b0be88b6cc13996d8f29ec819da26e))
* revert local api key value ([ff40e7a](https://github.com/unraid/api/commit/ff40e7ae392052d3d9e1b084c5f4851e8ebd529e))
* rollback if patch exists before applying ([c2f4e8d](https://github.com/unraid/api/commit/c2f4e8d4e5c758601bd20ba491fd077b434ba45e))
* secondary changes ([d75331a](https://github.com/unraid/api/commit/d75331a67e3566875ce8642fce80195e79932a4c))
* service tests for modifier service ([08c1502](https://github.com/unraid/api/commit/08c150259f2b4630d973803f4edff69c8bf0ec3a))
* session issues ([5981693](https://github.com/unraid/api/commit/5981693abd605337f9174ba4c85fd1bfc243edeb))
* shared call to createPatch ([eb3e263](https://github.com/unraid/api/commit/eb3e263fb32a748bfa06ec6d119ee51d242707cf))
* simplify docs ([d428030](https://github.com/unraid/api/commit/d428030b806f55b62421559d434fc723786b03ad))
* style improvements ([b0f395e](https://github.com/unraid/api/commit/b0f395ef76f11047eaa13091df277df0459e9d8f))
* swap to async exit hook ([4302f31](https://github.com/unraid/api/commit/4302f316820a109c76408092994727b2dc030a15))
* switch to nest-commander ([1ab2ab5](https://github.com/unraid/api/commit/1ab2ab5b58a1f49cd6b05aaa84bfeced49d68e8e))
* try catch restart ([89abee6](https://github.com/unraid/api/commit/89abee680bdbdaa9946ddb991f0e6b5ada9ccdf7))
* **ui:** webgui-compatible web component library ([#1075](https://github.com/unraid/api/issues/1075)) ([1c7b2e0](https://github.com/unraid/api/commit/1c7b2e091b0975438860a8e1fc3db5fd8d3fcf93))
* unnecessary comment ([0c52256](https://github.com/unraid/api/commit/0c5225612875b96319b28ef447db69ecab15cfda))
* unraid single sign on with account app ([5183104](https://github.com/unraid/api/commit/5183104b322a328eea3e4b2f6d86fd9d4b1c76e3))
* update packageManager field for pnpm ([8d5db7a](https://github.com/unraid/api/commit/8d5db7a9bfdf528e2d58b20cc62434ea5929d24f))
* upgrade dependencies ([0a0cac3](https://github.com/unraid/api/commit/0a0cac3da74c2fe20f7100a9ad5d1caafa74b157))
* use execa for start and stop ([46ab014](https://github.com/unraid/api/commit/46ab0144d41b425015487c251c1884744223ba29))
* use zod to parse config ([19cf1be](https://github.com/unraid/api/commit/19cf1be079f2ccb9e0cfa10f2fb97a18f15c5729))
* validate token format in both PHP and CLI ([6ef05a3](https://github.com/unraid/api/commit/6ef05a3d7770f799e7d587c2cef8d29f6058bee1))
* **web:** add delete all notifications button to archive view in notifications sidebar ([3bda9d6](https://github.com/unraid/api/commit/3bda9d6a4ca01cc5580012b0133e72929d6dab40))
* **web:** enhance notifications indicator in UPC ([#950](https://github.com/unraid/api/issues/950)) ([6376848](https://github.com/unraid/api/commit/63768486e4ec64ab32666a26adf96f4db4a53e81))
* **web:** pull date format from display/date and time settings ([b058067](https://github.com/unraid/api/commit/b058067b628ca7866a9ba0a6c4c5e4d5505d98cb))
* **web:** rm api-key validation from connect sign in ([#986](https://github.com/unraid/api/issues/986)) ([7b105d1](https://github.com/unraid/api/commit/7b105d18678e88a064f0643d6e857704789e0ee8))
* zod config no longer any ([c32c5f5](https://github.com/unraid/api/commit/c32c5f57127b9469bde8806d78dc364562e73d9f))
### Bug Fixes
* allow concurrent testing with a shared patcher instance ([623846e](https://github.com/unraid/api/commit/623846ef46eb24a32c62516de58e8bc5d0219833))
* **api:** append time to formatted date when a custom date format is selected ([0ac8ed9](https://github.com/unraid/api/commit/0ac8ed9d9e7e239e471eedf466832aed0270d123))
* **api:** change log output location for diagnostic compatibility ([#1130](https://github.com/unraid/api/issues/1130)) ([cba1551](https://github.com/unraid/api/commit/cba155138379d47bc3151c7c27d745ba6a345d83))
* **api:** delay pm2 start until server has booted ([bd3188e](https://github.com/unraid/api/commit/bd3188efea4d3656994ffae32bd53f821c96358d))
* **api:** exclude duplicates from legacy script in archive retrieval ([8644e13](https://github.com/unraid/api/commit/8644e130979ed8740c5a8da0b3984266e2b3684c))
* **api:** improve defaults in PM2 service ([#1116](https://github.com/unraid/api/issues/1116)) ([57526de](https://github.com/unraid/api/commit/57526dede69e3a6547d05183e43c5b36dd1cae89))
* **api:** logrotate modification & permissions ([#1145](https://github.com/unraid/api/issues/1145)) ([5209df2](https://github.com/unraid/api/commit/5209df2776e1a985e82bedc655fe28acf1fd0bde))
* **api:** make cookie recognition during websocket connection more ([353e012](https://github.com/unraid/api/commit/353e012db8ab5280863f32392c520b4a330c13cc))
* **api:** pm2 start script & limit auto restarts ([#1040](https://github.com/unraid/api/issues/1040)) ([ebcd347](https://github.com/unraid/api/commit/ebcd3479e735724626ffc6907c338d5080898bee))
* **api:** retry mothership connection up to 3x before logout ([#1069](https://github.com/unraid/api/issues/1069)) ([c27bb1b](https://github.com/unraid/api/commit/c27bb1be4c7a9ab201585586f3bc5e4afa1c7791))
* **api:** sanitize incoming user session id's ([f5e3424](https://github.com/unraid/api/commit/f5e3424b79702e8f959b5519e83370a9e1d2033b))
* **api:** slow init of unraid-api cli ([#1022](https://github.com/unraid/api/issues/1022)) ([5dbbae7](https://github.com/unraid/api/commit/5dbbae796792a62234497d056eac019aa084b21c))
* **api:** update deploy-dev script to dist instead of src ([55cce09](https://github.com/unraid/api/commit/55cce09e65521762a6fe388d5b9b88ace1337c26))
* **api:** validate cookie session data ([491f680](https://github.com/unraid/api/commit/491f680607ce7244d9e47a457e44cde711fbe00c))
* apply and rollback error handling ([e22191b](https://github.com/unraid/api/commit/e22191bc77bc09f5c6c4ad57e5073829cf966ba4))
* authorization type error ([#987](https://github.com/unraid/api/issues/987)) ([7a4799e](https://github.com/unraid/api/commit/7a4799e9cd4caef6acfc3661d205a377fcf499ab))
* back to default configs ([b5711c9](https://github.com/unraid/api/commit/b5711c91284072991bcf409ac6126cd4b46afc7c))
* backup restore formatting ([15210f6](https://github.com/unraid/api/commit/15210f64b0938ec884a3ef4379d245c661eab9a3))
* basic test fixed ([2f38035](https://github.com/unraid/api/commit/2f38035520ca0fe796c981d08b9136d89ffc5888))
* better js file handling ([ddf160e](https://github.com/unraid/api/commit/ddf160e878a352842e813154b607945ccc7b4081))
* better loader functionality and error handling ([8a57d2d](https://github.com/unraid/api/commit/8a57d2dccbcb9c2effc5df5d8c69ad02713de24a))
* cleaner logs for starting API ([79f26ef](https://github.com/unraid/api/commit/79f26ef251cb42e7f2106d00c6c05e2bf17b8227))
* clearer error messaging ([e373849](https://github.com/unraid/api/commit/e37384966c5b9079bb507052dcaba56232c1c42a))
* code review feedback ([c66079e](https://github.com/unraid/api/commit/c66079e9a8e0ef47e5054118d0581bec708ac604))
* completion script registration ([05c8c9b](https://github.com/unraid/api/commit/05c8c9bf078ece2061ad8ae32497f52b8c9b94dc))
* connect key role ([2dcfc1c](https://github.com/unraid/api/commit/2dcfc1c19a1d085df84f0b1b50c096e3220205dd))
* create api key for connect on startup ([58329bc](https://github.com/unraid/api/commit/58329bc29521ebc26b27ee20013ac3926c5088c2))
* create api key permissions ([cefb644](https://github.com/unraid/api/commit/cefb644bd7fa513f553ca0ca4c49f0fb42a74112))
* create connect key ([6b1ab7b](https://github.com/unraid/api/commit/6b1ab7b74ae1d2938fa9105180a5f66e9604fd41))
* cwd on ecosystem.config.json ([dfd0da4](https://github.com/unraid/api/commit/dfd0da4ca23078f6de2e54d5e5bd6cba06334abc))
* default overwrite false test ([cf59107](https://github.com/unraid/api/commit/cf59107e568d91be684176335db5300bee9be865))
* delete .original files ([a9eb21a](https://github.com/unraid/api/commit/a9eb21aac0f373990aaa3f7a99731612540533cf))
* deprecated version warning ([89d0bd2](https://github.com/unraid/api/commit/89d0bd2e6da35fb1e8d95627d38edb54f82e0c6b))
* **deps:** update all non-major dependencies ([#1158](https://github.com/unraid/api/issues/1158)) ([45ebc8b](https://github.com/unraid/api/commit/45ebc8b6e07c53ad3eee28d5cf8ac9cd0d827754))
* **deps:** update apollo graphql packages ([7b1ee99](https://github.com/unraid/api/commit/7b1ee9940cca46e563bb79c7056996315f9decc5))
* **deps:** update dependency @apollo/client to v3.12.6 ([bb7800a](https://github.com/unraid/api/commit/bb7800a8c088705fd8310671a9896cbe9b0184e5))
* **deps:** update dependency @apollo/client to v3.12.9 ([6607cf2](https://github.com/unraid/api/commit/6607cf20c10a091d466c6a8031eebc17feb3e3fc))
* **deps:** update dependency @graphql-tools/load-files to v7.0.1 ([4e5c724](https://github.com/unraid/api/commit/4e5c7242e43cc356f1c69adcfcd25b57896af476))
* **deps:** update dependency @nestjs/schedule to v4.1.2 ([faf0de5](https://github.com/unraid/api/commit/faf0de5a19256efb83dc45a484e3cba65596ccd7))
* **deps:** update dependency chokidar to v4.0.3 ([d63a93c](https://github.com/unraid/api/commit/d63a93c55004d17b6d17634c55ffbc5670ebbec7))
* **deps:** update dependency dockerode to v4 ([#830](https://github.com/unraid/api/issues/830)) ([c331ecd](https://github.com/unraid/api/commit/c331ecd50c4910fd6c35e5ad92b3f676d552febc))
* **deps:** update dependency dotenv to v16.4.7 ([c66a650](https://github.com/unraid/api/commit/c66a6502b027853046d126a14ddee870ffabd10c))
* **deps:** update dependency execa to v9.5.2 ([d487c90](https://github.com/unraid/api/commit/d487c90ccc20162c76f0cdf49a736c1fee4271bd))
* **deps:** update dependency express to v4.21.2 ([a070306](https://github.com/unraid/api/commit/a07030684c8777e47eb4a51be0ea680b7f217e74))
* **deps:** update dependency got to v14.4.5 ([975a47c](https://github.com/unraid/api/commit/975a47c7d47841c49443f46264feb54abf53698c))
* **deps:** update dependency graphql-ws to v5.16.2 ([25d8f08](https://github.com/unraid/api/commit/25d8f085b67c2e53876d837c739214dc874116b8))
* **deps:** update dependency ini to v4.1.3 ([4c88cbe](https://github.com/unraid/api/commit/4c88cbee4b2d5f6717241dadac23bfe90ce15193))
* **deps:** update dependency node-window-polyfill to v1.0.4 ([8bfa88f](https://github.com/unraid/api/commit/8bfa88f4bc932eb82dd9b33a494811ea15764758))
* **deps:** update dependency openid-client to v6.1.7 ([0f50517](https://github.com/unraid/api/commit/0f50517a8544e1eb9b08ad1b3f05f798491b7f23))
* **deps:** update dependency p-retry to v6.2.1 ([c6f3241](https://github.com/unraid/api/commit/c6f324155019e066701723a57b642c6e3ba8332d))
* **deps:** update dependency pm2 to v5.4.3 ([a754090](https://github.com/unraid/api/commit/a75409026dd4e3d9ed120802012b67b179327448))
* **deps:** update dependency uuid to v11.0.5 ([7e3398b](https://github.com/unraid/api/commit/7e3398b2efabf1a5407d6e20c165eb4923b3bab2))
* **deps:** update graphql-tools monorepo ([cd7e2fe](https://github.com/unraid/api/commit/cd7e2feea199276a1d431cf355e54e12e5960d9a))
* **deps:** update graphqlcodegenerator monorepo ([0446c59](https://github.com/unraid/api/commit/0446c5924a6a9dd15b875628ca0f1197cfe521c4))
* **deps:** update graphqlcodegenerator monorepo ([15c789d](https://github.com/unraid/api/commit/15c789dbb34b85bed55c2731fb8ae8260f5f311f))
* **deps:** update nest monorepo to v10.4.15 ([07b1ea9](https://github.com/unraid/api/commit/07b1ea9a10634a597909ae1d237cc3b1e7f959b7))
* **deps:** update nest-graphql monorepo to v12.2.2 ([91aabd9](https://github.com/unraid/api/commit/91aabd9ffbfb8c2ceb4110217dfc05de8859077d))
* do not process.exit on restart or stop command ([933575f](https://github.com/unraid/api/commit/933575fc2badbb09b3a9d3c66724e37a9ee246f2))
* don't check code for execa ([508a5eb](https://github.com/unraid/api/commit/508a5eb49d9514dca9953317d9fa93314fe63e4c))
* dont remove login file without a backup presetn ([0370e4f](https://github.com/unraid/api/commit/0370e4f7ea3e3df0d2264264324d8e53ffc0c086))
* ensure directory exists before making connect key ([9e27ec9](https://github.com/unraid/api/commit/9e27ec98b68a49bdd6dc4b03de8c0cc3a1470a5e))
* excess spacing in api-key.service ([1deb002](https://github.com/unraid/api/commit/1deb0023287a39d40e52e89c515a28e62352f62c))
* extra log line ([1183063](https://github.com/unraid/api/commit/1183063aa7063afd8222def18f5e1fd6077e8c88))
* extra spacing in config.ts ([f3ee7be](https://github.com/unraid/api/commit/f3ee7be80f2c60266fbb13597a70f0a389fb577f))
* file modification service fixes ([aa5b3f4](https://github.com/unraid/api/commit/aa5b3f4e47ed88df23af00dfcccb7b64786b6231))
* find by key, not ID ([3c3fa1e](https://github.com/unraid/api/commit/3c3fa1e27cfabbe6926c3da8870751397eed1def))
* fix libvirt bindings ([#1167](https://github.com/unraid/api/issues/1167)) ([5817e5d](https://github.com/unraid/api/commit/5817e5d4b1697bbdfaa1984ccd650a232233cc15))
* forced restarting on commands ([925866d](https://github.com/unraid/api/commit/925866d389e337fcb8c249ead929e1f65854465b))
* format authrequest mod as other files ([180a81d](https://github.com/unraid/api/commit/180a81dbae8e749eae237fc8cee2950c790eedf0))
* formatting issue ([42ca969](https://github.com/unraid/api/commit/42ca9691f7547a4340501863c1882efc0aee4c60))
* initial feedback about report addressed ([5dee09c](https://github.com/unraid/api/commit/5dee09c77ad375de2eca59f650e5fea2070087b5))
* install as-integrations/fastify ([ff4546d](https://github.com/unraid/api/commit/ff4546d6692d2a4799f2dbeef0d5e5c6bac62561))
* length ([83579f1](https://github.com/unraid/api/commit/83579f1fbd03ffe929d009c20d214b4de62835c6))
* lint ([0f218b8](https://github.com/unraid/api/commit/0f218b8b72e397734823efab8f2141973a3a80ce))
* lint ([82bca54](https://github.com/unraid/api/commit/82bca54c594265ddf23a298691bd7ef6d4b47f32))
* lint ([ceb443d](https://github.com/unraid/api/commit/ceb443da15d177a950c36af61b93a7126cf4ca85))
* lint ([da04e7c](https://github.com/unraid/api/commit/da04e7ce0873d7802a936952d91e9867f0868a6e))
* lint ([7d87f0e](https://github.com/unraid/api/commit/7d87f0eee23dfa0f391fd342d38ed9084f18d8d4))
* logrotate error ([8c64dd2](https://github.com/unraid/api/commit/8c64dd2f2c65aa83ce0e2d501357ee595c976e56))
* mock ensureDirSync ([7e012e6](https://github.com/unraid/api/commit/7e012e6a2eb96ccddf5a1f69d7580b4bdfe7a0a9))
* more generic test ([0f651db](https://github.com/unraid/api/commit/0f651dbf61a1822b492aa80030f0bc231bc6f606))
* only instantiate service one time ([933dc81](https://github.com/unraid/api/commit/933dc81b6c50db5a33f586f7094e1ea524b9a9fa))
* only toast unread notifications, not archived ones ([cc59be6](https://github.com/unraid/api/commit/cc59be6cb3efc71226ee50f9f04e37a2e4b50de6))
* padding and glob function issues ([1d3f2eb](https://github.com/unraid/api/commit/1d3f2eb8213115c3385ac2d29ee8f53560347ba8))
* patch-utils unused ([047808d](https://github.com/unraid/api/commit/047808dce0cd9e9b4b273a9124dbd45ca9446208))
* paths now correct, better download logic ([16db2d9](https://github.com/unraid/api/commit/16db2d908dcb2c65508b367712c51bf9872a95e5))
* properly log error with template string ([3781f1f](https://github.com/unraid/api/commit/3781f1f41c7f0eef604daee0402ed9a2bb27cd46))
* pull token from query not params ([2e827e7](https://github.com/unraid/api/commit/2e827e7cabe4a6a069d4e8779015e5896d8a1d1d))
* remove devDependencies from output package json ([294869b](https://github.com/unraid/api/commit/294869bbea7f8a1863f8aafae6b074330e057679))
* remove isNaN in favor of number.isNaN ([03e3a46](https://github.com/unraid/api/commit/03e3a46092db613281176b88cae284f6448027c6))
* remove memory key generation ([b84db13](https://github.com/unraid/api/commit/b84db1322104c7f26f7b6378f25a2757b3010c6d))
* remove unused constructor ([e0e2a7b](https://github.com/unraid/api/commit/e0e2a7b41c5e599ed4cf3bf49c7faea3b71f0b70))
* remove usage of Role.UPC ([d1e2f6e](https://github.com/unraid/api/commit/d1e2f6e0b391cb4eca75a0997b41cb99a9953d42))
* report issues + pm2 issues ([28c383e](https://github.com/unraid/api/commit/28c383e1d111d4ac4226d7d966533ba80ca5d9a1))
* reset config to be closer to default ([b7fbb0b](https://github.com/unraid/api/commit/b7fbb0b6af0453f5f6a17087bb7e68c393b9fe3f))
* resource busy when removing all subdirectories ([29936c9](https://github.com/unraid/api/commit/29936c90938fb83bc2f154315ca63a9d7cc98552))
* restart command elegant ([296117b](https://github.com/unraid/api/commit/296117b51aac8a4c15366f2271af858868b6e071))
* revert changelog ([e9d47ca](https://github.com/unraid/api/commit/e9d47caf181148317e5ba8f0d11a433b09add0e3))
* revert dockerode upgrade ([#1140](https://github.com/unraid/api/issues/1140)) ([a74a379](https://github.com/unraid/api/commit/a74a379a93fd15a315e31191de1bf69c5879f8a6))
* revert myservers.cfg ([d0896f3](https://github.com/unraid/api/commit/d0896f3ef8aebdd9c76d805ed6a35b4a5d5a1b08))
* sandbox defaults in dev mode wrong ([2a24919](https://github.com/unraid/api/commit/2a2491936cf85013be836450ab7ed0cc11207e11))
* sequential test execution for generic-modification ([79ee1f7](https://github.com/unraid/api/commit/79ee1f7552cee47c6f5a8eb5942468292212e2f2))
* shell path to unraid-api ([15d11e4](https://github.com/unraid/api/commit/15d11e477bb2a08d785a7b22bd51900279a55508))
* simplify api setup index ([701b1fb](https://github.com/unraid/api/commit/701b1fbd9096c9675475062eaf32a2cbfb0567b9))
* simplify upcoming features ([8af79b2](https://github.com/unraid/api/commit/8af79b27501b42e1c1f7697756a56a9001000d8f))
* staging build issues ([e6bcb8d](https://github.com/unraid/api/commit/e6bcb8de7daee463f7ac0dbf977e085e108302ba))
* start command simplification ([e1faf3a](https://github.com/unraid/api/commit/e1faf3aa8db5973eb1bb0ea7a4844f820504618d))
* stop command exits ([2dbfdb6](https://github.com/unraid/api/commit/2dbfdb670a773114c0fdc68c7cf9d29fa4e28a9b))
* swap to placeholder key ([d1864d0](https://github.com/unraid/api/commit/d1864d0020ed56ab2368d23b48604b55cff21ae4))
* test issues ([e4b55b1](https://github.com/unraid/api/commit/e4b55b133bb2dc4bf2ccfd6fd2fc244daadbea53))
* test simplification to ensure no redownloads ([e07dad3](https://github.com/unraid/api/commit/e07dad3a6947aa186c4ac03032b5b3813cd046b6))
* tests ([25c1c1a](https://github.com/unraid/api/commit/25c1c1a55a3fb32b76bf5cb7257a4ba44f717a89))
* tests and validate token clears screen ([7f48ddd](https://github.com/unraid/api/commit/7f48dddcd2e2ea1ae3a55ecc54d5ac274535b714))
* type for generic test ([e856535](https://github.com/unraid/api/commit/e85653592a9d6eadcd0be89bf90a96c5d313fda3))
* unit test issues ([c58f7a7](https://github.com/unraid/api/commit/c58f7a7f246902c7d354eb51d1c87c8ea3b636a3))
* unit tests updated ([9548505](https://github.com/unraid/api/commit/954850535bec6b09aaf66b01d3ee749c8a22de5d))
* unneeded await on api-key service ([0325be7](https://github.com/unraid/api/commit/0325be757ee4c04b5c23365ff592f521a492595b))
* unused imports ([a5447aa](https://github.com/unraid/api/commit/a5447aa2f4c99968651fa3750d6bf0e8d68678de))
* update tests ([d0696a9](https://github.com/unraid/api/commit/d0696a93810893ccd6c676df1c639ca279992428))
* use an enum and defaults for sandbox value ([eb56483](https://github.com/unraid/api/commit/eb56483ba2693944d39f4409c91b75ee82a7d30b))
* use batchProcess ([ffbb9d7](https://github.com/unraid/api/commit/ffbb9d7750568bfa849d21e051503d1fcca5355f))
* use cwd when running application ([e016652](https://github.com/unraid/api/commit/e01665264b6f45366cdacf60c0f3553adfbd85d3))
* use placeholder in test API key ([c6b7755](https://github.com/unraid/api/commit/c6b7755214de8bedd5c0f2735473c2a559b1e26f))
* watch all events to load keys ([59ca177](https://github.com/unraid/api/commit/59ca17787e4d36113b0a8c5ef2117acfc491c49c))
* **web:** name of toaster component ([e093242](https://github.com/unraid/api/commit/e093242d20ddd72567396f4a53238250f2199a64))
### Miscellaneous Chores
* release 4.1.2 ([dbab290](https://github.com/unraid/api/commit/dbab290b429f9eff8fa903d193de2bd02bb392bd))
### [4.1.1](https://github.com/unraid/api/compare/v4.1.0...v4.1.1) (2025-02-20)

View File

@@ -1,7 +1,7 @@
###########################################################
# Development/Build Image
###########################################################
FROM node:20-bookworm-slim AS development
FROM node:22-bookworm-slim AS development
# Install build tools and dependencies
RUN apt-get update -y && apt-get install -y \
@@ -42,4 +42,4 @@ ENV NODE_ENV=production
COPY . .
CMD ["pnpm", "run", "build-and-pack"]
CMD ["pnpm", "run", "build:release"]

View File

@@ -1,105 +1,105 @@
import type { CodegenConfig } from '@graphql-codegen/cli';
const config: CodegenConfig = {
overwrite: true,
emitLegacyCommonJSImports: false,
verbose: true,
config: {
namingConvention: {
typeNames: './fix-array-type.cjs',
enumValues: 'change-case#upperCase',
useTypeImports: true,
},
scalars: {
DateTime: 'string',
Long: 'number',
JSON: '{ [key: string]: any }',
URL: 'URL',
Port: 'number',
UUID: 'string',
},
},
generates: {
'src/graphql/generated/client/': {
documents: './src/graphql/mothership/*.ts',
schema: {
[process.env.MOTHERSHIP_GRAPHQL_LINK as string]: {
headers: {
origin: 'https://forums.unraid.net',
},
overwrite: true,
emitLegacyCommonJSImports: false,
verbose: true,
config: {
namingConvention: {
typeNames: './fix-array-type.cjs',
enumValues: 'change-case#upperCase',
useTypeImports: true,
},
},
preset: 'client',
presetConfig: {
gqlTagName: 'graphql',
},
config: {
useTypeImports: true,
withObjectType: true,
},
plugins: [
{ add: { content: '/* eslint-disable */' } },
],
},
// Generate Types for the API Server
'src/graphql/generated/api/types.ts': {
schema: [
'./src/graphql/types.ts',
'./src/graphql/schema/types/**/*.graphql',
],
plugins: [
'typescript',
'typescript-resolvers',
{ add: { content: '/* eslint-disable */' } },
],
config: {
contextType: '@app/graphql/schema/utils#Context',
useIndexSignature: true,
},
},
// Generate Operations for any built-in API Server Operations (e.g., report.ts)
'src/graphql/generated/api/operations.ts': {
documents: './src/graphql/client/api/*.ts',
schema: [
'./src/graphql/types.ts',
'./src/graphql/schema/types/**/*.graphql',
],
preset: 'import-types',
presetConfig: {
typesPath: '@app/graphql/generated/api/types',
},
plugins: [
'typescript-validation-schema',
'typescript-operations',
'typed-document-node',
{ add: { content: '/* eslint-disable */' } },
],
config: {
importFrom: '@app/graphql/generated/api/types',
strictScalars: false,
schema: 'zod',
withObjectType: true,
},
},
'src/graphql/generated/client/validators.ts': {
schema: {
[process.env.MOTHERSHIP_GRAPHQL_LINK as string]: {
headers: {
origin: 'https://forums.unraid.net',
},
scalars: {
DateTime: 'string',
Long: 'number',
JSON: 'Record<string, any>',
URL: 'URL',
Port: 'number',
UUID: 'string',
},
scalarSchemas: {
URL: 'z.instanceof(URL)',
Long: 'z.number()',
JSON: 'z.record(z.string(), z.any())',
Port: 'z.number()',
UUID: 'z.string()',
},
},
generates: {
'src/graphql/generated/client/': {
documents: './src/graphql/mothership/*.ts',
schema: {
[process.env.MOTHERSHIP_GRAPHQL_LINK as string]: {
headers: {
origin: 'https://forums.unraid.net',
},
},
},
preset: 'client',
presetConfig: {
gqlTagName: 'graphql',
},
config: {
useTypeImports: true,
withObjectType: true,
},
plugins: [{ add: { content: '/* eslint-disable */' } }],
},
// Generate Types for the API Server
'src/graphql/generated/api/types.ts': {
schema: ['./src/graphql/types.ts', './src/graphql/schema/types/**/*.graphql'],
plugins: [
'typescript',
'typescript-resolvers',
{ add: { content: '/* eslint-disable */\n/* @ts-nocheck */' } },
],
config: {
contextType: '@app/graphql/schema/utils.js#Context',
useIndexSignature: true,
},
},
// Generate Operations for any built-in API Server Operations (e.g., report.ts)
'src/graphql/generated/api/operations.ts': {
documents: './src/graphql/client/api/*.ts',
schema: ['./src/graphql/types.ts', './src/graphql/schema/types/**/*.graphql'],
preset: 'import-types',
presetConfig: {
typesPath: '@app/graphql/generated/api/types.js',
},
plugins: [
'typescript-validation-schema',
'typescript-operations',
'typed-document-node',
{ add: { content: '/* eslint-disable */' } },
],
config: {
importFrom: '@app/graphql/generated/api/types.js',
strictScalars: true,
schema: 'zod',
withObjectType: true,
},
},
'src/graphql/generated/client/validators.ts': {
schema: {
[process.env.MOTHERSHIP_GRAPHQL_LINK as string]: {
headers: {
origin: 'https://forums.unraid.net',
},
},
},
plugins: ['typescript-validation-schema', { add: { content: '/* eslint-disable */' } }],
config: {
importFrom: '@app/graphql/generated/client/graphql.js',
strictScalars: false,
schema: 'zod',
},
},
},
plugins: [
'typescript-validation-schema',
{ add: { content: '/* eslint-disable */' } },
],
config: {
importFrom: '@app/graphql/generated/client/graphql',
strictScalars: false,
schema: 'zod',
},
},
},
};
export default config;

1
api/commitlint.config.js Normal file
View File

@@ -0,0 +1 @@
module.exports = { extends: ['@commitlint/config-conventional'] };

View File

@@ -0,0 +1 @@
┘[5╢╦О яb┴ ю└;R╛леЩ²ДА├y÷шd│яя╛Еlя▓ё"Hи╜ь;QДs≈@Вы▄╠╩1·Qy╓к|й╔+╨фM)X9jя▄тГО⌠1а2WHщ'│.ЕJё-╨MPгS╜╧:Ю▓]o9^ЮО0┴$"░ l^`╪ >3к:╦я ЯО┤q~ёш≈└с ш5ёЗ=р╟─]╗IWf╥и ⌡?:У2ВоE5[р╨Ш(÷╤Е+о│ШIмAч²%╞╓дq:ё╤эb╣┼

View File

@@ -1,5 +1,5 @@
[api]
version="4.0.1"
version="4.1.3"
extraOrigins="https://google.com,https://test.com"
[local]
sandbox="yes"

1
api/dev/data/machine-id Normal file
View File

@@ -0,0 +1 @@
d0b5433294c110f1eed72bdb63910a9a

View File

@@ -0,0 +1 @@
version="6.12.0-beta5"

BIN
api/dev/dynamix/banner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View File

@@ -0,0 +1 @@
case-model.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -32,5 +32,5 @@ display="0"
date="d-m-Y"
time="H:i"
position="top-right"
path="/app/dev/notifications"
path="./dev/notifications"
system="*/1 * * * *"

0
api/dev/states/devs.ini Normal file
View File

View File

@@ -1,5 +1,5 @@
[api]
version="4.0.1"
version="4.4.1"
extraOrigins="https://google.com,https://test.com"
[local]
sandbox="yes"
@@ -20,5 +20,5 @@ dynamicRemoteAccessType="DISABLED"
ssoSubIds=""
allowedOrigins="/var/run/unraid-notifications.sock, /var/run/unraid-php.sock, /var/run/unraid-cli.sock, http://localhost:8080, https://localhost:4443, https://tower.local:4443, https://192.168.1.150:4443, https://tower:4443, https://192-168-1-150.thisisfourtyrandomcharacters012345678900.myunraid.net:4443, https://85-121-123-122.thisisfourtyrandomcharacters012345678900.myunraid.net:8443, https://10-252-0-1.hash.myunraid.net:4443, https://10-252-1-1.hash.myunraid.net:4443, https://10-253-3-1.hash.myunraid.net:4443, https://10-253-4-1.hash.myunraid.net:4443, https://10-253-5-1.hash.myunraid.net:4443, https://10-100-0-1.hash.myunraid.net:4443, https://10-100-0-2.hash.myunraid.net:4443, https://10-123-1-2.hash.myunraid.net:4443, https://221-123-121-112.hash.myunraid.net:4443, https://google.com, https://test.com, https://connect.myunraid.net, https://connect-staging.myunraid.net, https://dev-my.myunraid.net:4000, https://studio.apollographql.com"
[connectionStatus]
minigraph="PRE_INIT"
minigraph="ERROR_RETRYING"
upnpStatus=""

View File

@@ -0,0 +1,30 @@
[eth0]
DHCP_KEEPRESOLV="no"
DNS_SERVER1="1.1.1.1"
DNS_SERVER2="8.8.8.8"
DHCP6_KEEPRESOLV="no"
BONDING="yes"
BONDNAME=""
BONDNICS="eth0,eth1,eth2,eth3"
BONDING_MODE="1"
BONDING_MIIMON="100"
BRIDGING="yes"
BRNAME=""
BRNICS="bond0"
BRSTP="0"
BRFD="0"
DESCRIPTION:0=""
PROTOCOL:0=""
USE_DHCP:0="yes"
IPADDR:0="192.168.1.150"
NETMASK:0="255.255.255.0"
GATEWAY:0="192.168.1.1"
METRIC:0=""
USE_DHCP6:0=""
IPADDR6:0=""
NETMASK6:0=""
GATEWAY6:0=""
METRIC6:0=""
PRIVACY6:0=""
MTU=""
TYPE="access"

190
api/dev/states/sec.ini Normal file
View File

@@ -0,0 +1,190 @@
["disk1"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk2"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk3"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk4"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk5"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk6"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk7"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk8"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk9"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk10"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk11"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk12"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk13"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk14"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk15"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk16"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk17"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk18"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk19"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk20"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk21"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["disk22"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["abc"]
export="e"
fruit="no"
caseSensitive="auto"
security="public"
readList=""
writeList=""
volsizelimit=""
["flash"]
export="e"
fruit="no"
security="public"
readList=""
writeList=""

View File

@@ -0,0 +1,92 @@
["disk1"]
export="-"
security="public"
hostList=""
["disk2"]
export="-"
security="public"
hostList=""
["disk3"]
export="-"
security="public"
hostList=""
["disk4"]
export="-"
security="public"
hostList=""
["disk5"]
export="-"
security="public"
hostList=""
["disk6"]
export="-"
security="public"
hostList=""
["disk7"]
export="-"
security="public"
hostList=""
["disk8"]
export="-"
security="public"
hostList=""
["disk9"]
export="-"
security="public"
hostList=""
["disk10"]
export="-"
security="public"
hostList=""
["disk11"]
export="-"
security="public"
hostList=""
["disk12"]
export="-"
security="public"
hostList=""
["disk13"]
export="-"
security="public"
hostList=""
["disk14"]
export="-"
security="public"
hostList=""
["disk15"]
export="-"
security="public"
hostList=""
["disk16"]
export="-"
security="public"
hostList=""
["disk17"]
export="-"
security="public"
hostList=""
["disk18"]
export="-"
security="public"
hostList=""
["disk19"]
export="-"
security="public"
hostList=""
["disk20"]
export="-"
security="public"
hostList=""
["disk21"]
export="-"
security="public"
hostList=""
["disk22"]
export="-"
security="public"
hostList=""
["abc"]
export="-"
security="public"
hostList=""

68
api/dev/states/shares.ini Normal file
View File

@@ -0,0 +1,68 @@
["appdata"]
name="appdata"
nameOrig="appdata"
comment=""
allocator="highwater"
splitLevel=""
floor="0"
include=""
exclude=""
useCache="no"
cachePool="cache"
cow="auto"
color="yellow-on"
size="0"
free="9091184"
used="32831348"
luksStatus="0"
["domains"]
name="domains"
nameOrig="domains"
comment="saved VM instances"
allocator="highwater"
splitLevel="1"
floor="0"
include=""
exclude=""
useCache="prefer"
cachePool="cache"
cow="auto"
color="yellow-on"
size="0"
free="9091184"
used="32831348"
luksStatus="0"
["isos"]
name="isos"
nameOrig="isos"
comment="ISO images"
allocator="highwater"
splitLevel=""
floor="0"
include=""
exclude=""
useCache="yes"
cachePool="cache"
cow="auto"
color="yellow-on"
size="0"
free="9091184"
used="32831348"
luksStatus="0"
["system"]
name="system"
nameOrig="system"
comment="system data"
allocator="highwater"
splitLevel="1"
floor="0"
include=""
exclude=""
useCache="prefer"
cachePool="cache"
cow="auto"
color="yellow-on"
size="0"
free="9091184"
used="32831348"
luksStatus="0"

15
api/dev/states/users.ini Normal file
View File

@@ -0,0 +1,15 @@
["root"]
idx="0"
name="root"
desc="Console and webGui login account"
passwd="yes"
["xo"]
idx="1"
name="xo"
desc=""
passwd="yes"
["test_user"]
idx="2"
name="test_user"
desc=""
passwd="no"

View File

@@ -87,7 +87,7 @@ shareAvahiSMBModel="Xserve"
shfs_logging="1"
safeMode="no"
startMode="Normal"
configValid="yes"
configValid="ineligible"
joinStatus="Not joined"
deviceCount="4"
flashGUID="0000-0000-0000-000000000000"

View File

@@ -2,7 +2,7 @@
## Installation
Manual install can be done with the following routes:
Manual install of the staging and production plugins can be done with the following routes:
[production](https://stable.dl.unraid.net/unraid-api/dynamix.unraid.net.plg)
[staging](https://preview.dl.unraid.net/unraid-api/dynamix.unraid.net.staging.plg)

View File

@@ -11,11 +11,11 @@ The repository consists of:
- Core Modules
- Tests
## API Server Architecture
## API Server Architecture
The API server is built with NestJS and provides the core functionality for interacting with Unraid systems.
### Key Components:
### Key Components
- `src/unraid-api/` - Core NestJS implementation
- `src/core/` - Legacy business logic and utilities
@@ -61,7 +61,7 @@ The store syncs data in two ways:
The repository is organized into several packages:
- `api/` - NestJS API server
- `plugin/` - Unraid plugin package
- `plugin/` - Unraid plugin package
- `web/` - Frontend application
- `unraid-ui/` - Shared UI components

View File

@@ -0,0 +1,219 @@
# Unraid API Development Workflows
This document outlines the various workflow styles available for developing, building, and deploying the Unraid API monorepo.
## Repository Structure
The Unraid API monorepo consists of several packages:
- `api`: The Unraid API backend
- `web`: The web frontend components
- `plugin`: The Unraid plugin
- `unraid-ui`: UI components library
## Development Workflows
### Local Development
To start all development servers in the monorepo:
```bash
pnpm dev
```
This command runs all development servers concurrently:
- API server: <http://localhost:3001>
- Web components: <http://localhost:4321>
- UI components: <http://localhost:5173>
### Package-Specific Development
If you want to work on a specific package, you can run its development server individually:
#### API Development
```bash
cd api
pnpm dev
```
#### Web Development
```bash
cd web
pnpm dev
```
#### UI Component Development
```bash
cd unraid-ui
pnpm dev
```
## Building Workflows
### Building All Packages
To build all packages in the monorepo:
```bash
pnpm build
```
### Watch Mode Building
For continuous building during development:
```bash
pnpm build:watch
```
This is useful when you want to see your changes reflected without manually rebuilding. This will also allow you to install a local plugin to test your changes.
### Package-Specific Building
#### API Building
```bash
cd api
pnpm build
```
#### Web Building
```bash
cd web
pnpm build
```
#### Development Build for Web
```bash
cd web
pnpm build:dev
```
## Deployment Workflows
### Deploying to Development Unraid Server
To deploy to a development Unraid server:
```bash
pnpm unraid:deploy <SERVER_IP>
```
This command builds and deploys all components to the specified Unraid server.
### Package-Specific Deployment
#### API Deployment
```bash
cd api
pnpm unraid:deploy <SERVER_IP>
```
#### Web Deployment
```bash
cd web
pnpm unraid:deploy <SERVER_IP>
```
#### Plugin Deployment
```bash
cd plugin
pnpm unraid:deploy <SERVER_IP>
```
## Testing
To run tests across all packages:
```bash
pnpm test
```
### Package-Specific Testing
```bash
cd <package-directory>
pnpm test
```
## Code Quality Workflows
### Linting
To lint all packages:
```bash
pnpm lint
```
To automatically fix linting issues:
```bash
pnpm lint:fix
```
### Type Checking
To run type checking across all packages:
```bash
pnpm type-check
```
## GraphQL Codegen Workflows
For packages that use GraphQL, you can generate types from your schema:
```bash
cd <package-directory>
pnpm codegen
```
To watch for changes and regenerate types:
```bash
cd <package-directory>
pnpm codegen:watch
```
## Docker Workflows
The API package supports Docker-based development:
```bash
cd api
pnpm container:build # Build the Docker container
pnpm container:start # Start the container
pnpm container:stop # Stop the container
pnpm container:enter # Enter the container shell
pnpm container:test # Run tests in the container
```
## CLI Commands
When working with a deployed Unraid API, you can use the CLI:
```bash
unraid-api --help
```
## Recommended Workflow for New Developers
1. Clone the repository: `git clone git@github.com:unraid/api.git`
2. Set up the monorepo: `just setup` or `pnpm install`
3. Start development servers: `pnpm dev`
4. Make your changes
5. Test your changes: `pnpm test`
6. Deploy to a development server: `pnpm unraid:deploy <SERVER_IP>`
7. Verify your changes on the Unraid server
If using nix, run `nix develop` from the root of the repo before Step 2.

View File

@@ -11,6 +11,7 @@
"max_restarts": 10,
"min_uptime": 10000,
"watch": false,
"interpreter": "/usr/local/node/bin/node",
"ignore_watch": ["node_modules", "src", ".env.*", "myservers.cfg"],
"log_file": "/var/log/graphql-api.log",
"kill_timeout": 10000

18
api/fix-array-type.cjs Normal file
View File

@@ -0,0 +1,18 @@
/**
* This function wraps constant case, that turns any string into CONSTANT_CASE
* However, this function has a bug that, if you pass _ to it it will return an empty
* string. This small module fixes that
*
* @param {string*} str
* @return {string}
*/
function FixArrayType(str) {
if (str === 'Array') {
return 'ArrayType';
}
// If result is an empty string, just return the original string
return str;
}
module.exports = FixArrayType;

View File

@@ -4,17 +4,13 @@ default:
@just --list --justfile {{justfile()}} --list-heading $'\nAPI project recipes:\n'
@just list-commands
setup:
pnpm install
pnpm run container:build
# builds js files that can run on an unraid server
@build:
pnpm run build
# deploys to an unraid server
@deploy:
./scripts/deploy-dev.sh
@deploy remote:
./scripts/deploy-dev.sh {{remote}}
# build & deploy
bd: build deploy
alias b := build
alias d := deploy

View File

@@ -1,6 +1,6 @@
{
"name": "@unraid/api",
"version": "4.1.2",
"version": "4.6.1",
"main": "src/cli/index.ts",
"type": "module",
"corepack": {
@@ -8,34 +8,37 @@
},
"repository": "git@github.com:unraid/api.git",
"author": "Lime Technology, Inc. <unraid.net>",
"license": "UNLICENSED",
"license": "GPL-2.0-or-later",
"engines": {
"pnpm": ">=8.0.0"
},
"scripts": {
"// Main application commands": "",
"// Development": "",
"start": "node dist/main.js",
"dev": "vite",
"command": "pnpm run build && clear && ./dist/cli.js",
"// Build commands": "",
"command:raw": "./dist/cli.js",
"// Build and Deploy": "",
"build": "vite build --mode=production",
"postbuild": "chmod +x dist/main.js && chmod +x dist/cli.js",
"build:watch": "nodemon --watch src --ext ts,js,json --exec 'tsx ./scripts/build.ts'",
"build:docker": "./scripts/dc.sh run --rm builder",
"build-and-pack": "tsx ./scripts/build.ts",
"// Code generation commands": "",
"build:release": "tsx ./scripts/build.ts",
"preunraid:deploy": "pnpm build",
"unraid:deploy": "./scripts/deploy-dev.sh",
"// GraphQL Codegen": "",
"codegen": "MOTHERSHIP_GRAPHQL_LINK='https://staging.mothership.unraid.net/ws' graphql-codegen --config codegen.ts -r dotenv/config './.env.staging'",
"codegen:watch": "DOTENV_CONFIG_PATH='./.env.staging' graphql-codegen --config codegen.ts --watch -r dotenv/config",
"codegen:local": "NODE_TLS_REJECT_UNAUTHORIZED=0 MOTHERSHIP_GRAPHQL_LINK='https://mothership.localhost/ws' graphql-codegen --config codegen.ts --watch",
"// Development and quality tools": "",
"tsc": "tsc --noEmit",
"// Code Quality": "",
"lint": "eslint --config .eslintrc.ts src/",
"lint:fix": "eslint --fix --config .eslintrc.ts src/",
"release": "standard-version",
"// Testing commands": "",
"type-check": "tsc --noEmit",
"// Testing": "",
"test": "NODE_ENV=test vitest run",
"test:watch": "NODE_ENV=test vitest --ui",
"coverage": "NODE_ENV=test vitest run --coverage",
"// Container management commands": "",
"// Docker": "",
"container:build": "./scripts/dc.sh build dev",
"container:start": "pnpm run container:stop && ./scripts/dc.sh run --rm --service-ports dev",
"container:stop": "./scripts/dc.sh stop dev",
@@ -49,19 +52,21 @@
"@apollo/client": "^3.11.8",
"@apollo/server": "^4.11.2",
"@as-integrations/fastify": "^2.1.1",
"@fastify/cookie": "^9.4.0",
"@fastify/cookie": "^11.0.2",
"@fastify/helmet": "^13.0.1",
"@graphql-codegen/client-preset": "^4.5.0",
"@graphql-tools/load-files": "^7.0.0",
"@graphql-tools/merge": "^9.0.8",
"@graphql-tools/schema": "^10.0.7",
"@graphql-tools/utils": "^10.5.5",
"@nestjs/apollo": "^12.2.1",
"@nestjs/common": "^10.4.7",
"@nestjs/core": "^10.4.7",
"@nestjs/graphql": "^12.2.1",
"@nestjs/passport": "^10.0.3",
"@nestjs/platform-fastify": "^10.4.7",
"@nestjs/schedule": "^4.1.1",
"@jsonforms/core": "^3.5.1",
"@nestjs/apollo": "^13.0.3",
"@nestjs/common": "^11.0.11",
"@nestjs/core": "^11.0.11",
"@nestjs/graphql": "^13.0.3",
"@nestjs/passport": "^11.0.0",
"@nestjs/platform-fastify": "^11.0.11",
"@nestjs/schedule": "^5.0.0",
"@nestjs/throttler": "^6.2.1",
"@reduxjs/toolkit": "^2.3.0",
"@runonflux/nat-upnp": "^1.0.2",
@@ -73,11 +78,11 @@
"cacheable-lookup": "^7.0.0",
"camelcase-keys": "^9.1.3",
"casbin": "^5.32.0",
"catch-exit": "^1.2.2",
"change-case": "^5.4.4",
"chokidar": "^4.0.1",
"cli-table": "^0.3.11",
"command-exists": "^1.2.9",
"convert": "^5.5.1",
"convert": "^5.8.0",
"cookie": "^1.0.2",
"cron": "3.5.0",
"cross-fetch": "^4.0.0",
@@ -87,26 +92,27 @@
"dotenv": "^16.4.5",
"execa": "^9.5.1",
"exit-hook": "^4.0.0",
"fastify": "^5.2.1",
"filenamify": "^6.0.0",
"fs-extra": "^11.2.0",
"glob": "^11.0.1",
"global-agent": "^3.0.0",
"got": "^14.4.4",
"got": "^14.4.6",
"graphql": "^16.9.0",
"graphql-fields": "^2.0.3",
"graphql-scalars": "^1.23.0",
"graphql-subscriptions": "^2.0.0",
"graphql-subscriptions": "^3.0.0",
"graphql-tag": "^2.12.6",
"graphql-type-json": "^0.3.2",
"graphql-type-uuid": "^0.2.0",
"graphql-ws": "^5.16.0",
"ini": "^4.1.2",
"graphql-ws": "^6.0.0",
"ini": "^5.0.0",
"ip": "^2.0.1",
"jose": "^5.9.6",
"jose": "^6.0.0",
"lodash-es": "^4.17.21",
"multi-ini": "^2.3.2",
"mustache": "^4.2.0",
"nest-authz": "^2.11.0",
"nest-authz": "^2.14.0",
"nest-commander": "^3.15.0",
"nestjs-pino": "^4.1.0",
"node-cache": "^5.1.2",
@@ -117,18 +123,21 @@
"path-type": "^6.0.0",
"pino": "^9.5.0",
"pino-http": "^10.3.0",
"pino-pretty": "^11.3.0",
"pm2": "^5.4.2",
"pino-pretty": "^13.0.0",
"pm2": "^6.0.0",
"reflect-metadata": "^0.1.14",
"request": "^2.88.2",
"rxjs": "^7.8.2",
"semver": "^7.6.3",
"strftime": "^0.10.3",
"systeminformation": "^5.25.11",
"uuid": "^11.0.2",
"ws": "^8.18.0",
"zen-observable-ts": "^1.1.0",
"zod": "^3.23.8"
},
"devDependencies": {
"@eslint/js": "^9.21.0",
"@graphql-codegen/add": "^5.0.3",
"@graphql-codegen/cli": "^5.0.3",
"@graphql-codegen/fragment-matcher": "^5.0.2",
@@ -136,12 +145,12 @@
"@graphql-codegen/typed-document-node": "^5.0.11",
"@graphql-codegen/typescript": "^4.1.1",
"@graphql-codegen/typescript-operations": "^4.3.1",
"@graphql-codegen/typescript-resolvers": "4.4.3",
"@graphql-codegen/typescript-resolvers": "4.5.0",
"@graphql-typed-document-node/core": "^3.2.0",
"@ianvs/prettier-plugin-sort-imports": "^4.4.0",
"@nestjs/testing": "^10.4.7",
"@nestjs/testing": "^11.0.11",
"@originjs/vite-plugin-commonjs": "^1.0.3",
"@rollup/plugin-node-resolve": "^15.3.0",
"@rollup/plugin-node-resolve": "^16.0.0",
"@swc/core": "^1.10.1",
"@types/async-exit-hook": "^2.0.2",
"@types/bytes": "^3.1.4",
@@ -155,8 +164,8 @@
"@types/ip": "^1.1.3",
"@types/lodash": "^4.17.13",
"@types/mustache": "^4.2.5",
"@types/node": "^22.9.0",
"@types/pify": "^5.0.4",
"@types/node": "^22.13.4",
"@types/pify": "^6.0.0",
"@types/semver": "^7.5.8",
"@types/sendmail": "^1.4.7",
"@types/stoppable": "^1.1.3",
@@ -167,19 +176,23 @@
"@vitest/coverage-v8": "^3.0.5",
"@vitest/ui": "^3.0.5",
"cz-conventional-changelog": "3.3.0",
"eslint": "^9.14.0",
"eslint": "^9.20.1",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-n": "^17.0.0",
"eslint-plugin-no-relative-import-paths": "^1.6.1",
"eslint-plugin-prettier": "^5.2.3",
"graphql-codegen-typescript-validation-schema": "^0.17.0",
"jiti": "^2.4.0",
"nodemon": "^3.1.7",
"rollup-plugin-node-externals": "^7.1.3",
"prettier": "^3.5.2",
"rollup-plugin-node-externals": "^8.0.0",
"standard-version": "^9.5.0",
"tsx": "^4.19.2",
"type-fest": "^4.37.0",
"typescript": "^5.6.3",
"typescript-eslint": "^8.13.0",
"unplugin-swc": "^1.5.1",
"vite": "^5.4.14",
"vite": "^6.0.0",
"vite-plugin-node": "^4.0.0",
"vite-tsconfig-paths": "^5.1.0",
"vitest": "^3.0.5",
@@ -191,5 +204,5 @@
}
},
"private": true,
"packageManager": "pnpm@10.4.1"
"packageManager": "pnpm@10.7.1"
}

View File

@@ -8,8 +8,6 @@ import { getDeploymentVersion } from './get-deployment-version.js';
try {
// Create release and pack directories
// Clean existing deploy folder
await rm('./deploy', { recursive: true }).catch(() => {});
await mkdir('./deploy/release', { recursive: true });
await mkdir('./deploy/pack', { recursive: true });
@@ -27,31 +25,35 @@ try {
// Update the package.json version to the deployment version
parsedPackageJson.version = deploymentVersion;
// omit dev dependencies from release build
parsedPackageJson.devDependencies = {};
// Create a temporary directory for packaging
await mkdir('./deploy/pack/', { recursive: true });
await writeFile('./deploy/pack/package.json', JSON.stringify(parsedPackageJson, null, 4));
// Copy necessary files to the pack directory
await $`cp -r dist README.md .env.* ecosystem.config.json ./deploy/pack/`;
// Change to the pack directory and install dependencies
cd('./deploy/pack');
console.log('Installing production dependencies...');
console.log('Building production pnpm store...');
$.verbose = true;
await $`pnpm install --prod --ignore-workspace --node-linker hoisted`;
await $`pnpm install --prod --ignore-workspace --store-dir=../.pnpm-store`;
await $`rm -rf node_modules`; // Don't include node_modules in final package
const sudoCheck = await $`command -v sudo`.nothrow();
const SUDO = sudoCheck.exitCode === 0 ? 'sudo' : '';
await $`${SUDO} chown -R 0:0 ../.pnpm-store`;
await $`XZ_OPT=-5 tar -cJf ../packed-pnpm-store.txz ../.pnpm-store`;
await $`${SUDO} rm -rf ../.pnpm-store`;
// chmod the cli
await $`chmod +x ./dist/cli.js`;
await $`chmod +x ./dist/main.js`;
// Create the tarball
await $`tar -czf ../release/unraid-api.tgz ./`;
// Clean up
cd('..');
} catch (error) {
// Error with a command
if (Object.keys(error).includes('stderr')) {

View File

@@ -1,26 +1,17 @@
#!/bin/bash
# Path to store the last used server name
state_file="$HOME/.deploy_state"
# Read the last used server name from the state file
if [[ -f "$state_file" ]]; then
last_server_name=$(cat "$state_file")
else
last_server_name=""
fi
# Read the server name from the command-line argument or use the last used server name as the default
server_name="${1:-$last_server_name}"
# Arguments
# $1: SSH server name (required)
# Check if the server name is provided
if [[ -z "$server_name" ]]; then
echo "Please provide the SSH server name."
if [[ -z "$1" ]]; then
echo "Error: SSH server name is required."
echo "Usage: $0 <server_name>"
exit 1
fi
# Save the current server name to the state file
echo "$server_name" > "$state_file"
# Set server name from command-line argument
server_name="$1"
# Source directory path
source_directory="./dist"
@@ -34,9 +25,11 @@ if [ ! -d "$source_directory" ]; then
fi
fi
# Change ownership on copy
# Destination directory path
destination_directory="/usr/local/unraid-api"
# Replace the value inside the rsync command with the user's input
rsync_command="rsync -avz -e ssh $source_directory root@${server_name}:/usr/local/unraid-api"
rsync_command="rsync -avz --progress --stats -e ssh \"$source_directory\" \"root@${server_name}:$destination_directory\""
echo "Executing the following command:"
echo "$rsync_command"
@@ -46,10 +39,10 @@ eval "$rsync_command"
exit_code=$?
# Chown the directory
ssh root@"${server_name}" "chown -R root:root /usr/local/unraid-api"
ssh root@"${server_name}" 'chown -R root:root /usr/local/unraid-api'
# Run unraid-api restart on remote host
ssh root@"${server_name}" "INTROSPECTION=true LOG_LEVEL=trace unraid-api restart"
ssh root@"${server_name}" 'INTROSPECTION=true LOG_LEVEL=trace unraid-api restart'
# Play built-in sound based on the operating system
if [[ "$OSTYPE" == "darwin"* ]]; then

View File

@@ -19,10 +19,12 @@ export const getDeploymentVersion = async (env = process.env, packageVersion: st
return env.IS_TAGGED ? packageVersion : `${packageVersion}+${env.GIT_SHA}`;
} else {
const gitShortSHA = await runCommand('git', ['rev-parse', '--short', 'HEAD']);
const isCommitTagged = await runCommand('git', ['describe', '--tags', '--abbrev=0', '--exact-match']) !== undefined;
const isCommitTagged =
(await runCommand('git', ['describe', '--tags', '--abbrev=0', '--exact-match'])) !==
undefined;
console.log('gitShortSHA', gitShortSHA, 'isCommitTagged', isCommitTagged);
if (!gitShortSHA) {
console.error('Failed to get git short SHA');
process.exit(1);

View File

@@ -1,7 +1,7 @@
import { getAllowedOrigins } from '@app/common/allowed-origins';
import { store } from '@app/store/index';
import { loadConfigFile } from '@app/store/modules/config';
import { loadStateFiles } from '@app/store/modules/emhttp';
import { getAllowedOrigins } from '@app/common/allowed-origins.js';
import { store } from '@app/store/index.js';
import { loadConfigFile } from '@app/store/modules/config.js';
import { loadStateFiles } from '@app/store/modules/emhttp.js';
import 'reflect-metadata';

View File

@@ -0,0 +1,3 @@
import { test } from 'vitest';
test.todo('Returns generated data');

View File

@@ -0,0 +1,5 @@
import { test } from 'vitest';
test.todo('Adds a disk to the array');
test.todo('Fails to add the disk if the array is started');

View File

@@ -1,11 +1,11 @@
import { expect, test, vi } from 'vitest';
import { getArrayData } from '@app/core/modules/array/get-array-data';
import { store } from '@app/store';
import { loadConfigFile } from '@app/store/modules/config';
import { loadStateFiles } from '@app/store/modules/emhttp';
import { getArrayData } from '@app/core/modules/array/get-array-data.js';
import { store } from '@app/store/index.js';
import { loadConfigFile } from '@app/store/modules/config.js';
import { loadStateFiles } from '@app/store/modules/emhttp.js';
vi.mock('@app/core/pubsub', () => ({
vi.mock('@app/core/pubsub.js', () => ({
pubsub: { publish: vi.fn() },
}));

View File

@@ -0,0 +1,5 @@
import { test } from 'vitest';
test.todo('Removes a disk from the array');
test.todo('Fails to remove the disk if the array is started');

View File

@@ -0,0 +1,5 @@
import { test } from 'vitest';
test.todo('Starts the array');
test.todo('Stops the array');

View File

@@ -0,0 +1,7 @@
import { test } from 'vitest';
test.todo('Can start a parity check');
test.todo('Can pause a parity check');
test.todo('Can start a parity check');

View File

@@ -0,0 +1,3 @@
import { test } from 'vitest';
test.todo('Returns the current content');

View File

@@ -0,0 +1,5 @@
import { test } from 'vitest';
test.todo('Returns a single disk by ID');
test.todo('Returns nothing if no disk matches the ID');

View File

@@ -0,0 +1,5 @@
import { test } from 'vitest';
test.todo('Returns all the Docker containers');
test.todo('Returns running Docker containers');

View File

@@ -0,0 +1,7 @@
import { test } from 'vitest';
test.todo('Returns all USB devices');
test.todo('Returns all PCI-e devices');
test.todo('Returns all audio devices');

View File

@@ -0,0 +1,3 @@
import { test } from 'vitest';
test.todo('Gets total count of Docker containers installed/running');

View File

@@ -0,0 +1,3 @@
import { test } from 'vitest';
test.todo('Returns baseboard info');

View File

@@ -0,0 +1,3 @@
import { test } from 'vitest';
test.todo('Gets CPU info');

View File

@@ -1,8 +1,8 @@
import { expect, test, vi } from 'vitest';
import { ConsoleNotifier } from '@app/core/notifiers/console';
import { ConsoleNotifier } from '@app/core/notifiers/console.js';
vi.mock('@app/core/log', () => ({
vi.mock('@app/core/log.js', () => ({
logger: {
info: vi.fn(),
error: vi.fn(),

View File

@@ -1,8 +1,8 @@
import { expect, test, vi } from 'vitest';
import { UnraidLocalNotifier } from '@app/core/notifiers/unraid-local';
import { UnraidLocalNotifier } from '@app/core/notifiers/unraid-local.js';
vi.mock('@app/core/log', () => ({
vi.mock('@app/core/log.js', () => ({
logger: {
info: vi.fn(),
error: vi.fn(),

View File

@@ -1,23 +0,0 @@
import { expect, test, vi } from 'vitest';
import type { SliceState } from '@app/store/modules/emhttp';
import { getters } from '@app/store';
test('Returns true if the array is started', async () => {
vi.spyOn(getters, 'emhttp').mockImplementation(
() => ({ var: { mdState: 'STARTED' } }) as unknown as SliceState
);
const { arrayIsRunning } = await import('@app/core/utils/array/array-is-running');
expect(arrayIsRunning()).toBe(true);
vi.spyOn(getters, 'emhttp').mockReset();
});
test('Returns false if the array is stopped', async () => {
vi.spyOn(getters, 'emhttp').mockImplementation(
() => ({ var: { mdState: 'Stopped' } }) as unknown as SliceState
);
const { arrayIsRunning } = await import('@app/core/utils/array/array-is-running');
expect(arrayIsRunning()).toBe(false);
vi.spyOn(getters, 'emhttp').mockReset();
});

View File

@@ -3,8 +3,8 @@ import 'reflect-metadata';
import { cloneDeep } from 'lodash-es';
import { expect, test } from 'vitest';
import { getWriteableConfig } from '@app/core/utils/files/config-file-normalizer';
import { initialState } from '@app/store/modules/config';
import { getWriteableConfig } from '@app/core/utils/files/config-file-normalizer.js';
import { initialState } from '@app/store/modules/config.js';
test('it creates a FLASH config with NO OPTIONAL values', () => {
const basicConfig = initialState;

View File

@@ -2,7 +2,7 @@ import { parse } from 'ini';
import { Serializer } from 'multi-ini';
import { expect, test } from 'vitest';
import { safelySerializeObjectToIni } from '@app/core/utils/files/safe-ini-serializer';
import { safelySerializeObjectToIni } from '@app/core/utils/files/safe-ini-serializer.js';
test('MultiIni breaks when serializing an object with a boolean inside', async () => {
const objectToSerialize = {

View File

@@ -1,8 +1,11 @@
import { expect, test } from 'vitest';
import { getBannerPathIfPresent, getCasePathIfPresent } from '@app/core/utils/images/image-file-helpers';
import { loadDynamixConfigFile } from '@app/store/actions/load-dynamix-config-file';
import { store } from '@app/store/index';
import {
getBannerPathIfPresent,
getCasePathIfPresent,
} from '@app/core/utils/images/image-file-helpers.js';
import { loadDynamixConfigFile } from '@app/store/actions/load-dynamix-config-file.js';
import { store } from '@app/store/index.js';
test('get case path returns expected result', async () => {
await expect(getCasePathIfPresent()).resolves.toContain('/dev/dynamix/case-model.png');

View File

@@ -0,0 +1,3 @@
import { test } from 'vitest';
test.todo('Sleeps atomically for n milliseconds');

View File

@@ -1,6 +1,6 @@
import { expect, test } from 'vitest';
import { cleanStdout } from '@app/core/utils/misc/clean-stdout';
import { cleanStdout } from '@app/core/utils/misc/clean-stdout.js';
test('Returns trimmed stdout from execa command', () => {
expect(cleanStdout({ stdout: 'test' })).toBe('test');

View File

@@ -1,13 +1,13 @@
import { expect, test } from 'vitest';
import { store } from '@app/store';
import { FileLoadStatus, StateFileKey } from '@app/store/types';
import { store } from '@app/store/index.js';
import { FileLoadStatus, StateFileKey } from '@app/store/types.js';
import '@app/core/utils/misc/get-key-file';
import '@app/store/modules/emhttp';
import '@app/core/utils/misc/get-key-file.js';
import '@app/store/modules/emhttp.js';
test('Before loading key returns null', async () => {
const { getKeyFile } = await import('@app/core/utils/misc/get-key-file');
const { getKeyFile } = await import('@app/core/utils/misc/get-key-file.js');
const { status } = store.getState().registration;
expect(status).toBe(FileLoadStatus.UNLOADED);
@@ -15,8 +15,8 @@ test('Before loading key returns null', async () => {
});
test('Requires emhttp to be loaded to find key file', async () => {
const { getKeyFile } = await import('@app/core/utils/misc/get-key-file');
const { loadRegistrationKey } = await import('@app/store/modules/registration');
const { getKeyFile } = await import('@app/core/utils/misc/get-key-file.js');
const { loadRegistrationKey } = await import('@app/store/modules/registration.js');
// Load registration key into store
await store.dispatch(loadRegistrationKey());
@@ -28,8 +28,8 @@ test('Requires emhttp to be loaded to find key file', async () => {
});
test('Returns empty key if key location is empty', async () => {
const { getKeyFile } = await import('@app/core/utils/misc/get-key-file');
const { updateEmhttpState } = await import('@app/store/modules/emhttp');
const { getKeyFile } = await import('@app/core/utils/misc/get-key-file.js');
const { updateEmhttpState } = await import('@app/store/modules/emhttp.js');
// Set key file location as empty
// This should only happen if the user doesn't have a key file
@@ -48,17 +48,21 @@ test('Returns empty key if key location is empty', async () => {
await expect(getKeyFile()).resolves.toBe('');
});
test('Returns decoded key file if key location exists', async () => {
const { getKeyFile } = await import('@app/core/utils/misc/get-key-file');
const { loadStateFiles } = await import('@app/store/modules/emhttp');
test(
'Returns decoded key file if key location exists',
async () => {
const { getKeyFile } = await import('@app/core/utils/misc/get-key-file.js');
const { loadStateFiles } = await import('@app/store/modules/emhttp.js');
// Load state files into store
await store.dispatch(loadStateFiles());
// Load state files into store
await store.dispatch(loadStateFiles());
// Check if store has state files loaded
const { status } = store.getState().registration;
expect(status).toBe(FileLoadStatus.LOADED);
await expect(getKeyFile()).resolves.toMatchInlineSnapshot(
'"hVs1tLjvC9FiiQsIwIQ7G1KszAcexf0IneThhnmf22SB0dGs5WzRkqMiSMmt2DtR5HOXFUD32YyxuzGeUXmky3zKpSu6xhZNKVg5atGM1OfvkzHBMldI3SeBLuUFSgejLbpNUMdTrbk64JJdbzle4O8wiQgkIpAMIGxeYLwLBD4zHBcfyzq40QnxG--HcX6j25eE0xqa2zWj-j0b0rCAXahJV2a3ySCbPzr1MvfPRTVb0rr7KJ-25R592hYrz4H7Sc1B3p0lr6QUxHE6o7bcYrWKDRtIVoZ8SMPpd1_0gzYIcl5GsDFzFumTXUh8NEnl0Q8hwW1YE-tRc6Y_rrvd7w"'
);
});
// Check if store has state files loaded
const { status } = store.getState().registration;
expect(status).toBe(FileLoadStatus.LOADED);
await expect(getKeyFile()).resolves.toMatchInlineSnapshot(
'"hVs1tLjvC9FiiQsIwIQ7G1KszAcexf0IneThhnmf22SB0dGs5WzRkqMiSMmt2DtR5HOXFUD32YyxuzGeUXmky3zKpSu6xhZNKVg5atGM1OfvkzHBMldI3SeBLuUFSgejLbpNUMdTrbk64JJdbzle4O8wiQgkIpAMIGxeYLwLBD4zHBcfyzq40QnxG--HcX6j25eE0xqa2zWj-j0b0rCAXahJV2a3ySCbPzr1MvfPRTVb0rr7KJ-25R592hYrz4H7Sc1B3p0lr6QUxHE6o7bcYrWKDRtIVoZ8SMPpd1_0gzYIcl5GsDFzFumTXUh8NEnl0Q8hwW1YE-tRc6Y_rrvd7w"'
);
},
{ timeout: 10000 }
);

View File

@@ -0,0 +1,3 @@
import { test } from 'vitest';
test.todo('Returns machine-id');

View File

@@ -4,8 +4,8 @@ import { parse } from 'ini';
import { Parser as MultiIniParser } from 'multi-ini';
import { expect, test } from 'vitest';
import { safelySerializeObjectToIni } from '@app/core/utils/files/safe-ini-serializer';
import { parseConfig } from '@app/core/utils/misc/parse-config';
import { safelySerializeObjectToIni } from '@app/core/utils/files/safe-ini-serializer.js';
import { parseConfig } from '@app/core/utils/misc/parse-config.js';
const iniTestData = `["root"]
idx="0"

View File

@@ -1,8 +1,8 @@
import { expect, test } from 'vitest';
import { getShares } from '@app/core/utils/shares/get-shares';
import { store } from '@app/store';
import { loadStateFiles } from '@app/store/modules/emhttp';
import { getShares } from '@app/core/utils/shares/get-shares.js';
import { store } from '@app/store/index.js';
import { loadStateFiles } from '@app/store/modules/emhttp.js';
test('Returns both disk and user shares', async () => {
await store.dispatch(loadStateFiles());

View File

@@ -1,34 +0,0 @@
import { afterEach, expect, test, vi } from 'vitest';
import { checkDNS } from '@app/graphql/resolvers/query/cloud/check-dns';
import { store } from '@app/store';
import { clearKey } from '@app/store/modules/cache';
import { CacheKeys } from '@app/store/types';
afterEach(() => {
store.dispatch(clearKey(CacheKeys.checkDns));
});
test('it resolves dns successfully', async () => {
// @TODO
const dns = await checkDNS('example.com');
expect(dns.cloudIp).not.toBeNull();
}, 25_000);
test('testing twice results in a cache hit', async () => {
// Hit mothership
const getters = await import('@app/store/getters');
const dnsSpy = vi.spyOn(getters, 'getDnsCache');
const dns = await checkDNS();
expect(dns.cloudIp).toBeTypeOf('string');
expect(dnsSpy.mock.results[0]).toMatchInlineSnapshot(`
{
"type": "return",
"value": undefined,
}
`);
const dnslookup2 = await checkDNS();
expect(dnslookup2.cloudIp).toEqual(dns.cloudIp);
expect(dnsSpy.mock.results[1].value.cloudIp).toEqual(dns.cloudIp);
expect(store.getState().cache.nodeCache.getTtl(CacheKeys.checkDns)).toBeGreaterThan(500);
});

View File

@@ -1,12 +1,15 @@
import 'reflect-metadata';
import { readFileSync } from 'fs';
import { join } from 'path';
import { expect, test } from 'vitest';
import packageJson from '@app/../package.json';
import { checkMothershipAuthentication } from '@app/graphql/resolvers/query/cloud/check-mothership-authentication';
import { checkMothershipAuthentication } from '@app/graphql/resolvers/query/cloud/check-mothership-authentication.js';
test('It fails to authenticate with mothership with no credentials', async () => {
try {
const packageJson = JSON.parse(readFileSync(join(process.cwd(), 'package.json'), 'utf-8'));
await expect(
checkMothershipAuthentication('BAD', 'BAD')
).rejects.toThrowErrorMatchingInlineSnapshot(

View File

@@ -1,15 +1,15 @@
import { expect, test } from 'vitest';
import type { NginxUrlFields } from '@app/graphql/resolvers/subscription/network';
import { type Nginx } from '@app/core/types/states/nginx';
import type { NginxUrlFields } from '@app/graphql/resolvers/subscription/network.js';
import { type Nginx } from '@app/core/types/states/nginx.js';
import {
getServerIps,
getUrlForField,
getUrlForServer,
} from '@app/graphql/resolvers/subscription/network';
import { store } from '@app/store';
import { loadConfigFile } from '@app/store/modules/config';
import { loadStateFiles } from '@app/store/modules/emhttp';
} from '@app/graphql/resolvers/subscription/network.js';
import { store } from '@app/store/index.js';
import { loadConfigFile } from '@app/store/modules/config.js';
import { loadStateFiles } from '@app/store/modules/emhttp.js';
test.each([
[{ httpPort: 80, httpsPort: 443, url: 'my-default-url.com' }],
@@ -117,16 +117,16 @@ test('getUrlForServer - field does not exist, ssl disabled', async () => {
test('getUrlForServer - FQDN - field exists, port non-empty', () => {
const result = getUrlForServer({
nginx: { lanFqdn: 'my-fqdn.unraid.net', httpsPort: 445 } as const as Nginx,
field: 'lanFqdn',
nginx: { lanFqdn: 'my-fqdn.unraid.net', httpsPort: 445 } as unknown as Nginx,
field: 'lanFqdn' as NginxUrlFields,
});
expect(result).toMatchInlineSnapshot('"https://my-fqdn.unraid.net:445/"');
});
test('getUrlForServer - FQDN - field exists, port empty', () => {
const result = getUrlForServer({
nginx: { lanFqdn: 'my-fqdn.unraid.net', httpPort: 80, httpsPort: 443 } as const as Nginx,
field: 'lanFqdn',
nginx: { lanFqdn: 'my-fqdn.unraid.net', httpPort: 80, httpsPort: 443 } as unknown as Nginx,
field: 'lanFqdn' as NginxUrlFields,
});
expect(result).toMatchInlineSnapshot('"https://my-fqdn.unraid.net/"');
});
@@ -140,7 +140,7 @@ test.each([
sslMode: 'no',
httpPort: 80,
httpsPort: 443,
} as const as Nginx,
} as unknown as Nginx,
field: 'lanFqdn' as NginxUrlFields,
},
],
@@ -152,7 +152,7 @@ test.each([
sslMode: 'yes',
httpPort: 80,
httpsPort: 443,
} as const as Nginx,
} as unknown as Nginx,
field: 'wanFqdn' as NginxUrlFields,
},
],
@@ -164,7 +164,7 @@ test.each([
sslMode: 'auto',
httpPort: 80,
httpsPort: 443,
} as const as Nginx,
} as unknown as Nginx,
field: 'wanFqdn6' as NginxUrlFields,
},
],
@@ -176,7 +176,7 @@ test.each([
test('getUrlForServer - field does not exist, ssl disabled', async () => {
const getResult = async () =>
getUrlForServer({
nginx: { lanFqdn: 'my-fqdn.unraid.net' } as const as Nginx,
nginx: { lanFqdn: 'my-fqdn.unraid.net' } as unknown as Nginx,
ports: { portSsl: '', port: '', defaultUrl: new URL('https://my-default-url.unraid.net') },
// @ts-expect-error Field doesn't exist
field: 'idontexist',

View File

@@ -0,0 +1,180 @@
import type { ControlElement } from '@jsonforms/core';
import { describe, expect, it } from 'vitest';
import type { SettingSlice } from '@app/unraid-api/types/json-forms.js';
import { createEmptySettingSlice, mergeSettingSlices } from '@app/unraid-api/types/json-forms.js';
describe('mergeSettingSlices', () => {
it('returns an empty slice when given an empty array', () => {
const result = mergeSettingSlices([]);
expect(result).toEqual(createEmptySettingSlice());
});
it('returns the same slice when given a single slice', () => {
const slice: SettingSlice = {
properties: {
test: { type: 'string' },
},
elements: [{ type: 'Control', scope: '#/properties/test' }],
};
const result = mergeSettingSlices([slice]);
expect(result).toEqual(slice);
});
it('merges properties and concatenates elements from multiple slices', () => {
const slice1: SettingSlice = {
properties: {
prop1: { type: 'string' },
},
elements: [{ type: 'Control', scope: '#/properties/prop1' }],
};
const slice2: SettingSlice = {
properties: {
prop2: { type: 'number' },
},
elements: [{ type: 'Control', scope: '#/properties/prop2' }],
};
const expected: SettingSlice = {
properties: {
prop1: { type: 'string' },
prop2: { type: 'number' },
},
elements: [
{ type: 'Control', scope: '#/properties/prop1' },
{ type: 'Control', scope: '#/properties/prop2' },
],
};
const result = mergeSettingSlices([slice1, slice2]);
expect(result).toEqual(expected);
});
it('handles more complex schema properties and UI elements', () => {
const slice1: SettingSlice = {
properties: {
name: {
type: 'string',
title: 'Name',
minLength: 3,
},
},
elements: [
{
type: 'Control',
scope: '#/properties/name',
label: 'Full Name',
} as ControlElement,
],
};
const slice2: SettingSlice = {
properties: {
age: {
type: 'number',
title: 'Age',
minimum: 0,
maximum: 120,
},
},
elements: [
{
type: 'Control',
scope: '#/properties/age',
label: 'Your Age',
} as ControlElement,
],
};
const slice3: SettingSlice = {
properties: {
active: {
type: 'boolean',
title: 'Active Status',
default: true,
},
},
elements: [
{
type: 'Control',
scope: '#/properties/active',
label: 'Is Active',
options: {
toggle: true,
},
} as ControlElement,
],
};
const result = mergeSettingSlices([slice1, slice2, slice3]);
// Check properties were merged correctly
expect(result.properties).toHaveProperty('name');
expect(result.properties).toHaveProperty('age');
expect(result.properties).toHaveProperty('active');
expect(result.properties.name.type).toBe('string');
expect(result.properties.age.type).toBe('number');
expect(result.properties.active.type).toBe('boolean');
// Check elements were concatenated in order
expect(result.elements).toHaveLength(3);
expect(result.elements[0]).toEqual(slice1.elements[0]);
expect(result.elements[1]).toEqual(slice2.elements[0]);
expect(result.elements[2]).toEqual(slice3.elements[0]);
});
it('later properties override earlier ones with the same key', () => {
const slice1: SettingSlice = {
properties: {
prop: { type: 'string', title: 'Original' },
},
elements: [
{ type: 'Control', scope: '#/properties/prop', label: 'First' } as ControlElement,
],
};
const slice2: SettingSlice = {
properties: {
prop: { type: 'number', title: 'Override' },
},
elements: [
{ type: 'Control', scope: '#/properties/prop', label: 'Second' } as ControlElement,
],
};
const result = mergeSettingSlices([slice1, slice2]);
// The property from slice2 should override the one from slice1
expect(result.properties.prop.type).toBe('number');
expect(result.properties.prop.title).toBe('Override');
// Both elements should be present
expect(result.elements).toHaveLength(2);
expect((result.elements[0] as ControlElement).label).toBe('First');
expect((result.elements[1] as ControlElement).label).toBe('Second');
});
it('preserves empty properties and elements', () => {
const slice1: SettingSlice = {
properties: {},
elements: [],
};
const slice2: SettingSlice = {
properties: {
prop: { type: 'string' },
},
elements: [{ type: 'Control', scope: '#/properties/prop' }],
};
const result = mergeSettingSlices([slice1, slice2]);
expect(result.properties).toHaveProperty('prop');
expect(result.elements).toHaveLength(1);
const result2 = mergeSettingSlices([slice2, slice1]);
expect(result2.properties).toHaveProperty('prop');
expect(result2.elements).toHaveLength(1);
});
});

View File

@@ -1,7 +1,7 @@
import { beforeEach, expect, test, vi } from 'vitest';
// Preloading imports for faster tests
import '@app/mothership/utils/convert-to-fuzzy-time';
import '@app/mothership/utils/convert-to-fuzzy-time.js';
vi.mock('fs', () => ({
default: {
@@ -17,7 +17,7 @@ vi.mock('@graphql-tools/schema', () => ({
makeExecutableSchema: vi.fn(),
}));
vi.mock('@app/core/log', () => ({
vi.mock('@app/core/log.js', () => ({
default: { relayLogger: { trace: vi.fn() } },
relayLogger: { trace: vi.fn() },
logger: { trace: vi.fn() },
@@ -40,7 +40,7 @@ const generateTestCases = () => {
};
test.each(generateTestCases())('Successfully converts to fuzzy time %o', async ({ min, max }) => {
const { convertToFuzzyTime } = await import('@app/mothership/utils/convert-to-fuzzy-time');
const { convertToFuzzyTime } = await import('@app/mothership/utils/convert-to-fuzzy-time.js');
const res = convertToFuzzyTime(min, max);
expect(res).toBeGreaterThanOrEqual(min);

View File

@@ -1,6 +1,6 @@
import { vi } from 'vitest';
vi.mock('@app/core/utils/misc/send-form-to-keyserver', () => {
vi.mock('@app/core/utils/misc/send-form-to-keyserver.js', () => {
const sendFormToKeyServer = vi.fn().mockResolvedValue({ body: JSON.stringify({ valid: true }) });
return { sendFormToKeyServer };
});

View File

@@ -1,7 +1,7 @@
import { expect, test } from 'vitest';
import { store } from '@app/store';
import { MyServersConfigMemory } from '@app/types/my-servers-config';
import { store } from '@app/store/index.js';
import { MyServersConfigMemory } from '@app/types/my-servers-config.js';
test('Before init returns default values for all fields', async () => {
const state = store.getState().config;
@@ -9,7 +9,7 @@ test('Before init returns default values for all fields', async () => {
}, 10_000);
test('After init returns values from cfg file for all fields', async () => {
const { loadConfigFile } = await import('@app/store/modules/config');
const { loadConfigFile } = await import('@app/store/modules/config.js');
// Load cfg into store
await store.dispatch(loadConfigFile());
@@ -53,7 +53,7 @@ test('After init returns values from cfg file for all fields', async () => {
});
test('updateUserConfig merges in changes to current state', async () => {
const { loadConfigFile, updateUserConfig } = await import('@app/store/modules/config');
const { loadConfigFile, updateUserConfig } = await import('@app/store/modules/config.js');
// Load cfg into store
await store.dispatch(loadConfigFile());

View File

@@ -1,10 +1,10 @@
import { expect, test } from 'vitest';
import { store } from '@app/store';
import { FileLoadStatus } from '@app/store/types';
import { store } from '@app/store/index.js';
import { FileLoadStatus } from '@app/store/types.js';
// Preloading imports for faster tests
import '@app/store/modules/emhttp';
import '@app/store/modules/emhttp.js';
test('Before init returns default values for all fields', async () => {
const { status, ...state } = store.getState().emhttp;
@@ -25,7 +25,7 @@ test('Before init returns default values for all fields', async () => {
});
test('After init returns values from cfg file for all fields', async () => {
const { loadStateFiles } = await import('@app/store/modules/emhttp');
const { loadStateFiles } = await import('@app/store/modules/emhttp.js');
// Load state files into store
await store.dispatch(loadStateFiles());
@@ -949,160 +949,160 @@ test('After init returns values from cfg file for all fields', async () => {
]
`);
expect(varState).toMatchInlineSnapshot(`
{
"bindMgt": false,
"cacheNumDevices": NaN,
"cacheSbNumDisks": NaN,
"comment": "Dev Server",
"configState": "yes",
"configValid": true,
"csrfToken": "0000000000000000",
"defaultFsType": "xfs",
"deviceCount": 4,
"domain": "",
"domainLogin": "Administrator",
"domainShort": "",
"enableFruit": "no",
"flashGuid": "0000-0000-0000-000000000000",
"flashProduct": "DataTraveler_3.0",
"flashVendor": "KINGSTON",
"fsCopyPrcnt": 0,
"fsNumMounted": 0,
"fsNumUnmountable": 0,
"fsProgress": "Autostart disabled",
"fsState": "Stopped",
"fsUnmountableMask": "",
"fuseDirectio": "auto",
"fuseDirectioDefault": "auto",
"fuseDirectioStatus": "default",
"fuseRemember": "330",
"fuseRememberDefault": "330",
"fuseRememberStatus": "default",
"fuseUseino": "yes",
"hideDotFiles": false,
"joinStatus": "Not joined",
"localMaster": true,
"localTld": "local",
"luksKeyfile": "/tmp/unraid/keyfile",
"maxArraysz": 30,
"maxCachesz": 30,
"mdColor": "green-blink",
"mdNumDisabled": 1,
"mdNumDisks": 4,
"mdNumErased": 0,
"mdNumInvalid": 1,
"mdNumMissing": 0,
"mdNumNew": 0,
"mdNumStripes": 1280,
"mdNumStripesDefault": 1280,
"mdNumStripesStatus": "default",
"mdQueueLimit": "80",
"mdQueueLimitDefault": "80",
"mdQueueLimitStatus": "default",
"mdResync": 0,
"mdResyncAction": "check P",
"mdResyncCorr": "0",
"mdResyncDb": "0",
"mdResyncDt": "0",
"mdResyncPos": 0,
"mdResyncSize": 438960096,
"mdScheduler": "auto",
"mdSchedulerDefault": "auto",
"mdSchedulerStatus": "default",
"mdState": "STOPPED",
"mdSyncLimit": "5",
"mdSyncLimitDefault": "5",
"mdSyncLimitStatus": "default",
"mdSyncThresh": NaN,
"mdSyncThreshDefault": NaN,
"mdSyncWindow": NaN,
"mdSyncWindowDefault": NaN,
"mdVersion": "2.9.14",
"mdWriteMethod": NaN,
"mdWriteMethodDefault": "auto",
"mdWriteMethodStatus": "default",
"name": "Tower",
"nrRequests": NaN,
"nrRequestsDefault": NaN,
"nrRequestsStatus": "default",
"ntpServer1": "time1.google.com",
"ntpServer2": "time2.google.com",
"ntpServer3": "time3.google.com",
"ntpServer4": "time4.google.com",
"pollAttributes": "1800",
"pollAttributesDefault": "1800",
"pollAttributesStatus": "default",
"port": 80,
"portssh": 22,
"portssl": 443,
"porttelnet": 23,
"queueDepth": "auto",
"regCheck": "Valid",
"regExp": "",
"regFile": "/app/dev/Unraid.net/Pro.key",
"regGen": "0",
"regGuid": "13FE-4200-C300-58C372A52B19",
"regState": "PRO",
"regTm": "1833409182",
"regTm2": "0",
"regTo": "Eli Bosley",
"regTy": "PRO",
"reservedNames": "parity,parity2,parity3,diskP,diskQ,diskR,disk,disks,flash,boot,user,user0,disk0,disk1,disk2,disk3,disk4,disk5,disk6,disk7,disk8,disk9,disk10,disk11,disk12,disk13,disk14,disk15,disk16,disk17,disk18,disk19,disk20,disk21,disk22,disk23,disk24,disk25,disk26,disk27,disk28,disk29,disk30,disk31",
"safeMode": false,
"sbClean": true,
"sbEvents": 173,
"sbName": "/boot/config/super.dat",
"sbNumDisks": 5,
"sbState": "1",
"sbSyncErrs": 0,
"sbSyncExit": "0",
"sbSynced": 1586819259,
"sbSynced2": 1586822456,
"sbUpdated": "1596079143",
"sbVersion": "2.9.13",
"security": "user",
"shareAvahiEnabled": true,
"shareAvahiSmbModel": "Xserve",
"shareAvahiSmbName": "%h",
"shareCacheEnabled": true,
"shareCacheFloor": "2000000",
"shareCount": 0,
"shareDisk": "yes",
"shareInitialGroup": "Domain Users",
"shareInitialOwner": "Administrator",
"shareMoverActive": false,
"shareMoverLogging": false,
"shareMoverSchedule": "40 3 * * *",
"shareNfsCount": 0,
"shareNfsEnabled": false,
"shareSmbCount": 1,
"shareSmbEnabled": true,
"shareSmbMode": "workgroup",
"shareUser": "e",
"shareUserExclude": "",
"shareUserInclude": "",
"shfsLogging": "1",
"shutdownTimeout": 90,
"spindownDelay": 0,
"spinupGroups": false,
"startArray": false,
"startMode": "Normal",
"startPage": "Main",
"sysArraySlots": 24,
"sysCacheSlots": NaN,
"sysFlashSlots": 1,
"sysModel": "Dell R710",
"timeZone": "Australia/Adelaide",
"useNetbios": "yes",
"useNtp": true,
"useSsh": true,
"useSsl": null,
"useTelnet": true,
"useUpnp": true,
"useWsd": "no",
"version": "6.11.2",
"workgroup": "WORKGROUP",
"wsdOpt": "",
}
`);
{
"bindMgt": false,
"cacheNumDevices": NaN,
"cacheSbNumDisks": NaN,
"comment": "Dev Server",
"configErrorState": "INELIGIBLE",
"configValid": false,
"csrfToken": "0000000000000000",
"defaultFsType": "xfs",
"deviceCount": 4,
"domain": "",
"domainLogin": "Administrator",
"domainShort": "",
"enableFruit": "no",
"flashGuid": "0000-0000-0000-000000000000",
"flashProduct": "DataTraveler_3.0",
"flashVendor": "KINGSTON",
"fsCopyPrcnt": 0,
"fsNumMounted": 0,
"fsNumUnmountable": 0,
"fsProgress": "Autostart disabled",
"fsState": "Stopped",
"fsUnmountableMask": "",
"fuseDirectio": "auto",
"fuseDirectioDefault": "auto",
"fuseDirectioStatus": "default",
"fuseRemember": "330",
"fuseRememberDefault": "330",
"fuseRememberStatus": "default",
"fuseUseino": "yes",
"hideDotFiles": false,
"joinStatus": "Not joined",
"localMaster": true,
"localTld": "local",
"luksKeyfile": "/tmp/unraid/keyfile",
"maxArraysz": 30,
"maxCachesz": 30,
"mdColor": "green-blink",
"mdNumDisabled": 1,
"mdNumDisks": 4,
"mdNumErased": 0,
"mdNumInvalid": 1,
"mdNumMissing": 0,
"mdNumNew": 0,
"mdNumStripes": 1280,
"mdNumStripesDefault": 1280,
"mdNumStripesStatus": "default",
"mdQueueLimit": "80",
"mdQueueLimitDefault": "80",
"mdQueueLimitStatus": "default",
"mdResync": 0,
"mdResyncAction": "check P",
"mdResyncCorr": "0",
"mdResyncDb": "0",
"mdResyncDt": "0",
"mdResyncPos": 0,
"mdResyncSize": 438960096,
"mdScheduler": "auto",
"mdSchedulerDefault": "auto",
"mdSchedulerStatus": "default",
"mdState": "STOPPED",
"mdSyncLimit": "5",
"mdSyncLimitDefault": "5",
"mdSyncLimitStatus": "default",
"mdSyncThresh": NaN,
"mdSyncThreshDefault": NaN,
"mdSyncWindow": NaN,
"mdSyncWindowDefault": NaN,
"mdVersion": "2.9.14",
"mdWriteMethod": NaN,
"mdWriteMethodDefault": "auto",
"mdWriteMethodStatus": "default",
"name": "Tower",
"nrRequests": NaN,
"nrRequestsDefault": NaN,
"nrRequestsStatus": "default",
"ntpServer1": "time1.google.com",
"ntpServer2": "time2.google.com",
"ntpServer3": "time3.google.com",
"ntpServer4": "time4.google.com",
"pollAttributes": "1800",
"pollAttributesDefault": "1800",
"pollAttributesStatus": "default",
"port": 80,
"portssh": 22,
"portssl": 443,
"porttelnet": 23,
"queueDepth": "auto",
"regCheck": "Valid",
"regExp": "",
"regFile": "/app/dev/Unraid.net/Pro.key",
"regGen": "0",
"regGuid": "13FE-4200-C300-58C372A52B19",
"regState": "PRO",
"regTm": "1833409182",
"regTm2": "0",
"regTo": "Eli Bosley",
"regTy": "PRO",
"reservedNames": "parity,parity2,parity3,diskP,diskQ,diskR,disk,disks,flash,boot,user,user0,disk0,disk1,disk2,disk3,disk4,disk5,disk6,disk7,disk8,disk9,disk10,disk11,disk12,disk13,disk14,disk15,disk16,disk17,disk18,disk19,disk20,disk21,disk22,disk23,disk24,disk25,disk26,disk27,disk28,disk29,disk30,disk31",
"safeMode": false,
"sbClean": true,
"sbEvents": 173,
"sbName": "/boot/config/super.dat",
"sbNumDisks": 5,
"sbState": "1",
"sbSyncErrs": 0,
"sbSyncExit": "0",
"sbSynced": 1586819259,
"sbSynced2": 1586822456,
"sbUpdated": "1596079143",
"sbVersion": "2.9.13",
"security": "user",
"shareAvahiEnabled": true,
"shareAvahiSmbModel": "Xserve",
"shareAvahiSmbName": "%h",
"shareCacheEnabled": true,
"shareCacheFloor": "2000000",
"shareCount": 0,
"shareDisk": "yes",
"shareInitialGroup": "Domain Users",
"shareInitialOwner": "Administrator",
"shareMoverActive": false,
"shareMoverLogging": false,
"shareMoverSchedule": "40 3 * * *",
"shareNfsCount": 0,
"shareNfsEnabled": false,
"shareSmbCount": 1,
"shareSmbEnabled": true,
"shareSmbMode": "workgroup",
"shareUser": "e",
"shareUserExclude": "",
"shareUserInclude": "",
"shfsLogging": "1",
"shutdownTimeout": 90,
"spindownDelay": 0,
"spinupGroups": false,
"startArray": false,
"startMode": "Normal",
"startPage": "Main",
"sysArraySlots": 24,
"sysCacheSlots": NaN,
"sysFlashSlots": 1,
"sysModel": "Dell R710",
"timeZone": "Australia/Adelaide",
"useNetbios": "yes",
"useNtp": true,
"useSsh": true,
"useSsl": null,
"useTelnet": true,
"useUpnp": true,
"useWsd": "no",
"version": "6.11.2",
"workgroup": "WORKGROUP",
"wsdOpt": "",
}
`);
});

View File

@@ -1,6 +1,6 @@
import { expect, test } from 'vitest';
import { store } from '@app/store';
import { store } from '@app/store/index.js';
test('Returns paths', async () => {
const { paths } = store.getState();
@@ -25,6 +25,7 @@ test('Returns paths', async () => {
"keyfile-base",
"machine-id",
"log-base",
"unraid-log-base",
"var-run",
"auth-sessions",
"auth-keys",

View File

@@ -1,8 +1,8 @@
import { expect, test } from 'vitest';
import { store } from '@app/store';
import { loadRegistrationKey } from '@app/store/modules/registration';
import { FileLoadStatus, StateFileKey } from '@app/store/types';
import { store } from '@app/store/index.js';
import { loadRegistrationKey } from '@app/store/modules/registration.js';
import { FileLoadStatus, StateFileKey } from '@app/store/types.js';
// Preloading imports for faster tests
@@ -24,8 +24,8 @@ test('Requires emhttp to be loaded to find key file', async () => {
});
test('Returns empty key if key location is empty', async () => {
const { updateEmhttpState } = await import('@app/store/modules/emhttp');
const { loadRegistrationKey } = await import('@app/store/modules/registration');
const { updateEmhttpState } = await import('@app/store/modules/emhttp.js');
const { loadRegistrationKey } = await import('@app/store/modules/registration.js');
// Set key file location as empty
// This should only happen if the user doesn't have a key file
@@ -46,21 +46,3 @@ test('Returns empty key if key location is empty', async () => {
expect(status).toBe(FileLoadStatus.LOADED);
expect(keyFile).toBe('');
});
test('Returns decoded key file if key location exists', async () => {
const { loadRegistrationKey } = await import('@app/store/modules/registration');
const { loadStateFiles } = await import('@app/store/modules/emhttp');
// Load state files into store
await store.dispatch(loadStateFiles());
// Load registration key into store
await store.dispatch(loadRegistrationKey());
// Check if store has state files loaded
const { status, keyFile } = store.getState().registration;
expect(status).toBe(FileLoadStatus.LOADED);
expect(keyFile).toMatchInlineSnapshot(
'"hVs1tLjvC9FiiQsIwIQ7G1KszAcexf0IneThhnmf22SB0dGs5WzRkqMiSMmt2DtR5HOXFUD32YyxuzGeUXmky3zKpSu6xhZNKVg5atGM1OfvkzHBMldI3SeBLuUFSgejLbpNUMdTrbk64JJdbzle4O8wiQgkIpAMIGxeYLwLBD4zHBcfyzq40QnxG--HcX6j25eE0xqa2zWj-j0b0rCAXahJV2a3ySCbPzr1MvfPRTVb0rr7KJ-25R592hYrz4H7Sc1B3p0lr6QUxHE6o7bcYrWKDRtIVoZ8SMPpd1_0gzYIcl5GsDFzFumTXUh8NEnl0Q8hwW1YE-tRc6Y_rrvd7w"'
);
});

View File

@@ -2,12 +2,12 @@ import { join } from 'path';
import { expect, test } from 'vitest';
import type { DevicesIni } from '@app/store/state-parsers/devices';
import { store } from '@app/store';
import type { DevicesIni } from '@app/store/state-parsers/devices.js';
import { store } from '@app/store/index.js';
test('Returns parsed state file', async () => {
const { parse } = await import('@app/store/state-parsers/devices');
const { parseConfig } = await import('@app/core/utils/misc/parse-config');
const { parse } = await import('@app/store/state-parsers/devices.js');
const { parseConfig } = await import('@app/core/utils/misc/parse-config.js');
const { paths } = store.getState();
const filePath = join(paths.states, 'devs.ini');
const stateFile = parseConfig<DevicesIni>({

View File

@@ -2,12 +2,12 @@ import { join } from 'path';
import { expect, test } from 'vitest';
import type { NetworkIni } from '@app/store/state-parsers/network';
import { store } from '@app/store';
import type { NetworkIni } from '@app/store/state-parsers/network.js';
import { store } from '@app/store/index.js';
test('Returns parsed state file', async () => {
const { parse } = await import('@app/store/state-parsers/network');
const { parseConfig } = await import('@app/core/utils/misc/parse-config');
const { parse } = await import('@app/store/state-parsers/network.js');
const { parseConfig } = await import('@app/core/utils/misc/parse-config.js');
const { paths } = store.getState();
const filePath = join(paths.states, 'network.ini');
const stateFile = parseConfig<NetworkIni>({

View File

@@ -2,12 +2,12 @@ import { join } from 'path';
import { expect, test } from 'vitest';
import type { NfsSharesIni } from '@app/store/state-parsers/nfs';
import { store } from '@app/store';
import type { NfsSharesIni } from '@app/store/state-parsers/nfs.js';
import { store } from '@app/store/index.js';
test('Returns parsed state file', async () => {
const { parse } = await import('@app/store/state-parsers/nfs');
const { parseConfig } = await import('@app/core/utils/misc/parse-config');
const { parse } = await import('@app/store/state-parsers/nfs.js');
const { parseConfig } = await import('@app/core/utils/misc/parse-config.js');
const { paths } = store.getState();
const filePath = join(paths.states, 'sec_nfs.ini');
const stateFile = parseConfig<NfsSharesIni>({

View File

@@ -2,12 +2,12 @@ import { join } from 'path';
import { expect, test } from 'vitest';
import type { NginxIni } from '@app/store/state-parsers/nginx';
import { store } from '@app/store';
import type { NginxIni } from '@app/store/state-parsers/nginx.js';
import { store } from '@app/store/index.js';
test('Returns parsed state file', async () => {
const { parse } = await import('@app/store/state-parsers/nginx');
const { parseConfig } = await import('@app/core/utils/misc/parse-config');
const { parse } = await import('@app/store/state-parsers/nginx.js');
const { parseConfig } = await import('@app/core/utils/misc/parse-config.js');
const { paths } = store.getState();
const filePath = join(paths.states, 'nginx.ini');
const stateFile = parseConfig<NginxIni>({

View File

@@ -2,12 +2,12 @@ import { join } from 'path';
import { expect, test } from 'vitest';
import type { SharesIni } from '@app/store/state-parsers/shares';
import { store } from '@app/store';
import type { SharesIni } from '@app/store/state-parsers/shares.js';
import { store } from '@app/store/index.js';
test('Returns parsed state file', async () => {
const { parse } = await import('@app/store/state-parsers/shares');
const { parseConfig } = await import('@app/core/utils/misc/parse-config');
const { parse } = await import('@app/store/state-parsers/shares.js');
const { parseConfig } = await import('@app/core/utils/misc/parse-config.js');
const { paths } = store.getState();
const filePath = join(paths.states, 'shares.ini');
const stateFile = parseConfig<SharesIni>({

View File

@@ -2,12 +2,12 @@ import { join } from 'path';
import { expect, test } from 'vitest';
import type { SlotsIni } from '@app/store/state-parsers/slots';
import { store } from '@app/store';
import type { SlotsIni } from '@app/store/state-parsers/slots.js';
import { store } from '@app/store/index.js';
test('Returns parsed state file', async () => {
const { parse } = await import('@app/store/state-parsers/slots');
const { parseConfig } = await import('@app/core/utils/misc/parse-config');
const { parse } = await import('@app/store/state-parsers/slots.js');
const { parseConfig } = await import('@app/core/utils/misc/parse-config.js');
const { paths } = store.getState();
const filePath = join(paths.states, 'disks.ini');
const stateFile = parseConfig<SlotsIni>({

View File

@@ -2,12 +2,12 @@ import { join } from 'path';
import { expect, test } from 'vitest';
import type { SmbIni } from '@app/store/state-parsers/smb';
import { store } from '@app/store';
import type { SmbIni } from '@app/store/state-parsers/smb.js';
import { store } from '@app/store/index.js';
test('Returns parsed state file', async () => {
const { parse } = await import('@app/store/state-parsers/smb');
const { parseConfig } = await import('@app/core/utils/misc/parse-config');
const { parse } = await import('@app/store/state-parsers/smb.js');
const { parseConfig } = await import('@app/core/utils/misc/parse-config.js');
const { paths } = store.getState();
const filePath = join(paths.states, 'sec.ini');
const stateFile = parseConfig<SmbIni>({

View File

@@ -2,12 +2,12 @@ import { join } from 'path';
import { expect, test } from 'vitest';
import type { UsersIni } from '@app/store/state-parsers/users';
import { store } from '@app/store';
import type { UsersIni } from '@app/store/state-parsers/users.js';
import { store } from '@app/store/index.js';
test('Returns parsed state file', async () => {
const { parse } = await import('@app/store/state-parsers/users');
const { parseConfig } = await import('@app/core/utils/misc/parse-config');
const { parse } = await import('@app/store/state-parsers/users.js');
const { parseConfig } = await import('@app/core/utils/misc/parse-config.js');
const { paths } = store.getState();
const filePath = join(paths.states, 'users.ini');
const stateFile = parseConfig<UsersIni>({

View File

@@ -2,12 +2,12 @@ import { join } from 'path';
import { expect, test } from 'vitest';
import type { VarIni } from '@app/store/state-parsers/var';
import { store } from '@app/store';
import type { VarIni } from '@app/store/state-parsers/var.js';
import { store } from '@app/store/index.js';
test('Returns parsed state file', async () => {
const { parse } = await import('@app/store/state-parsers/var');
const { parseConfig } = await import('@app/core/utils/misc/parse-config');
const { parse } = await import('@app/store/state-parsers/var.js');
const { parseConfig } = await import('@app/core/utils/misc/parse-config.js');
const { paths } = store.getState();
const filePath = join(paths.states, 'var.ini');
const stateFile = parseConfig<VarIni>({
@@ -16,160 +16,160 @@ test('Returns parsed state file', async () => {
});
expect(parse(stateFile)).toMatchInlineSnapshot(`
{
"bindMgt": false,
"cacheNumDevices": NaN,
"cacheSbNumDisks": NaN,
"comment": "Dev Server",
"configState": "yes",
"configValid": true,
"csrfToken": "0000000000000000",
"defaultFsType": "xfs",
"deviceCount": 4,
"domain": "",
"domainLogin": "Administrator",
"domainShort": "",
"enableFruit": "no",
"flashGuid": "0000-0000-0000-000000000000",
"flashProduct": "DataTraveler_3.0",
"flashVendor": "KINGSTON",
"fsCopyPrcnt": 0,
"fsNumMounted": 0,
"fsNumUnmountable": 0,
"fsProgress": "Autostart disabled",
"fsState": "Stopped",
"fsUnmountableMask": "",
"fuseDirectio": "auto",
"fuseDirectioDefault": "auto",
"fuseDirectioStatus": "default",
"fuseRemember": "330",
"fuseRememberDefault": "330",
"fuseRememberStatus": "default",
"fuseUseino": "yes",
"hideDotFiles": false,
"joinStatus": "Not joined",
"localMaster": true,
"localTld": "local",
"luksKeyfile": "/tmp/unraid/keyfile",
"maxArraysz": 30,
"maxCachesz": 30,
"mdColor": "green-blink",
"mdNumDisabled": 1,
"mdNumDisks": 4,
"mdNumErased": 0,
"mdNumInvalid": 1,
"mdNumMissing": 0,
"mdNumNew": 0,
"mdNumStripes": 1280,
"mdNumStripesDefault": 1280,
"mdNumStripesStatus": "default",
"mdQueueLimit": "80",
"mdQueueLimitDefault": "80",
"mdQueueLimitStatus": "default",
"mdResync": 0,
"mdResyncAction": "check P",
"mdResyncCorr": "0",
"mdResyncDb": "0",
"mdResyncDt": "0",
"mdResyncPos": 0,
"mdResyncSize": 438960096,
"mdScheduler": "auto",
"mdSchedulerDefault": "auto",
"mdSchedulerStatus": "default",
"mdState": "STOPPED",
"mdSyncLimit": "5",
"mdSyncLimitDefault": "5",
"mdSyncLimitStatus": "default",
"mdSyncThresh": NaN,
"mdSyncThreshDefault": NaN,
"mdSyncWindow": NaN,
"mdSyncWindowDefault": NaN,
"mdVersion": "2.9.14",
"mdWriteMethod": NaN,
"mdWriteMethodDefault": "auto",
"mdWriteMethodStatus": "default",
"name": "Tower",
"nrRequests": NaN,
"nrRequestsDefault": NaN,
"nrRequestsStatus": "default",
"ntpServer1": "time1.google.com",
"ntpServer2": "time2.google.com",
"ntpServer3": "time3.google.com",
"ntpServer4": "time4.google.com",
"pollAttributes": "1800",
"pollAttributesDefault": "1800",
"pollAttributesStatus": "default",
"port": 80,
"portssh": 22,
"portssl": 443,
"porttelnet": 23,
"queueDepth": "auto",
"regCheck": "Valid",
"regExp": "",
"regFile": "/app/dev/Unraid.net/Pro.key",
"regGen": "0",
"regGuid": "13FE-4200-C300-58C372A52B19",
"regState": "PRO",
"regTm": "1833409182",
"regTm2": "0",
"regTo": "Eli Bosley",
"regTy": "PRO",
"reservedNames": "parity,parity2,parity3,diskP,diskQ,diskR,disk,disks,flash,boot,user,user0,disk0,disk1,disk2,disk3,disk4,disk5,disk6,disk7,disk8,disk9,disk10,disk11,disk12,disk13,disk14,disk15,disk16,disk17,disk18,disk19,disk20,disk21,disk22,disk23,disk24,disk25,disk26,disk27,disk28,disk29,disk30,disk31",
"safeMode": false,
"sbClean": true,
"sbEvents": 173,
"sbName": "/boot/config/super.dat",
"sbNumDisks": 5,
"sbState": "1",
"sbSyncErrs": 0,
"sbSyncExit": "0",
"sbSynced": 1586819259,
"sbSynced2": 1586822456,
"sbUpdated": "1596079143",
"sbVersion": "2.9.13",
"security": "user",
"shareAvahiEnabled": true,
"shareAvahiSmbModel": "Xserve",
"shareAvahiSmbName": "%h",
"shareCacheEnabled": true,
"shareCacheFloor": "2000000",
"shareCount": 0,
"shareDisk": "yes",
"shareInitialGroup": "Domain Users",
"shareInitialOwner": "Administrator",
"shareMoverActive": false,
"shareMoverLogging": false,
"shareMoverSchedule": "40 3 * * *",
"shareNfsCount": 0,
"shareNfsEnabled": false,
"shareSmbCount": 1,
"shareSmbEnabled": true,
"shareSmbMode": "workgroup",
"shareUser": "e",
"shareUserExclude": "",
"shareUserInclude": "",
"shfsLogging": "1",
"shutdownTimeout": 90,
"spindownDelay": 0,
"spinupGroups": false,
"startArray": false,
"startMode": "Normal",
"startPage": "Main",
"sysArraySlots": 24,
"sysCacheSlots": NaN,
"sysFlashSlots": 1,
"sysModel": "Dell R710",
"timeZone": "Australia/Adelaide",
"useNetbios": "yes",
"useNtp": true,
"useSsh": true,
"useSsl": null,
"useTelnet": true,
"useUpnp": true,
"useWsd": "no",
"version": "6.11.2",
"workgroup": "WORKGROUP",
"wsdOpt": "",
}
`);
{
"bindMgt": false,
"cacheNumDevices": NaN,
"cacheSbNumDisks": NaN,
"comment": "Dev Server",
"configErrorState": "INELIGIBLE",
"configValid": false,
"csrfToken": "0000000000000000",
"defaultFsType": "xfs",
"deviceCount": 4,
"domain": "",
"domainLogin": "Administrator",
"domainShort": "",
"enableFruit": "no",
"flashGuid": "0000-0000-0000-000000000000",
"flashProduct": "DataTraveler_3.0",
"flashVendor": "KINGSTON",
"fsCopyPrcnt": 0,
"fsNumMounted": 0,
"fsNumUnmountable": 0,
"fsProgress": "Autostart disabled",
"fsState": "Stopped",
"fsUnmountableMask": "",
"fuseDirectio": "auto",
"fuseDirectioDefault": "auto",
"fuseDirectioStatus": "default",
"fuseRemember": "330",
"fuseRememberDefault": "330",
"fuseRememberStatus": "default",
"fuseUseino": "yes",
"hideDotFiles": false,
"joinStatus": "Not joined",
"localMaster": true,
"localTld": "local",
"luksKeyfile": "/tmp/unraid/keyfile",
"maxArraysz": 30,
"maxCachesz": 30,
"mdColor": "green-blink",
"mdNumDisabled": 1,
"mdNumDisks": 4,
"mdNumErased": 0,
"mdNumInvalid": 1,
"mdNumMissing": 0,
"mdNumNew": 0,
"mdNumStripes": 1280,
"mdNumStripesDefault": 1280,
"mdNumStripesStatus": "default",
"mdQueueLimit": "80",
"mdQueueLimitDefault": "80",
"mdQueueLimitStatus": "default",
"mdResync": 0,
"mdResyncAction": "check P",
"mdResyncCorr": "0",
"mdResyncDb": "0",
"mdResyncDt": "0",
"mdResyncPos": 0,
"mdResyncSize": 438960096,
"mdScheduler": "auto",
"mdSchedulerDefault": "auto",
"mdSchedulerStatus": "default",
"mdState": "STOPPED",
"mdSyncLimit": "5",
"mdSyncLimitDefault": "5",
"mdSyncLimitStatus": "default",
"mdSyncThresh": NaN,
"mdSyncThreshDefault": NaN,
"mdSyncWindow": NaN,
"mdSyncWindowDefault": NaN,
"mdVersion": "2.9.14",
"mdWriteMethod": NaN,
"mdWriteMethodDefault": "auto",
"mdWriteMethodStatus": "default",
"name": "Tower",
"nrRequests": NaN,
"nrRequestsDefault": NaN,
"nrRequestsStatus": "default",
"ntpServer1": "time1.google.com",
"ntpServer2": "time2.google.com",
"ntpServer3": "time3.google.com",
"ntpServer4": "time4.google.com",
"pollAttributes": "1800",
"pollAttributesDefault": "1800",
"pollAttributesStatus": "default",
"port": 80,
"portssh": 22,
"portssl": 443,
"porttelnet": 23,
"queueDepth": "auto",
"regCheck": "Valid",
"regExp": "",
"regFile": "/app/dev/Unraid.net/Pro.key",
"regGen": "0",
"regGuid": "13FE-4200-C300-58C372A52B19",
"regState": "PRO",
"regTm": "1833409182",
"regTm2": "0",
"regTo": "Eli Bosley",
"regTy": "PRO",
"reservedNames": "parity,parity2,parity3,diskP,diskQ,diskR,disk,disks,flash,boot,user,user0,disk0,disk1,disk2,disk3,disk4,disk5,disk6,disk7,disk8,disk9,disk10,disk11,disk12,disk13,disk14,disk15,disk16,disk17,disk18,disk19,disk20,disk21,disk22,disk23,disk24,disk25,disk26,disk27,disk28,disk29,disk30,disk31",
"safeMode": false,
"sbClean": true,
"sbEvents": 173,
"sbName": "/boot/config/super.dat",
"sbNumDisks": 5,
"sbState": "1",
"sbSyncErrs": 0,
"sbSyncExit": "0",
"sbSynced": 1586819259,
"sbSynced2": 1586822456,
"sbUpdated": "1596079143",
"sbVersion": "2.9.13",
"security": "user",
"shareAvahiEnabled": true,
"shareAvahiSmbModel": "Xserve",
"shareAvahiSmbName": "%h",
"shareCacheEnabled": true,
"shareCacheFloor": "2000000",
"shareCount": 0,
"shareDisk": "yes",
"shareInitialGroup": "Domain Users",
"shareInitialOwner": "Administrator",
"shareMoverActive": false,
"shareMoverLogging": false,
"shareMoverSchedule": "40 3 * * *",
"shareNfsCount": 0,
"shareNfsEnabled": false,
"shareSmbCount": 1,
"shareSmbEnabled": true,
"shareSmbMode": "workgroup",
"shareUser": "e",
"shareUserExclude": "",
"shareUserInclude": "",
"shfsLogging": "1",
"shutdownTimeout": 90,
"spindownDelay": 0,
"spinupGroups": false,
"startArray": false,
"startMode": "Normal",
"startPage": "Main",
"sysArraySlots": 24,
"sysCacheSlots": NaN,
"sysFlashSlots": 1,
"sysModel": "Dell R710",
"timeZone": "Australia/Adelaide",
"useNetbios": "yes",
"useNtp": true,
"useSsh": true,
"useSsl": null,
"useTelnet": true,
"useUpnp": true,
"useWsd": "no",
"version": "6.11.2",
"workgroup": "WORKGROUP",
"wsdOpt": "",
}
`);
});

View File

@@ -1,16 +1,20 @@
import { expect, test, vi } from 'vitest';
import { store } from '@app/store/index.js';
import { loadStateFiles } from '@app/store/modules/emhttp.js';
import { loadRegistrationKey } from '@app/store/modules/registration.js';
import { createRegistrationEvent } from '@app/store/sync/registration-sync.js';
vi.mock('@app/core/pubsub', () => ({
pubsub: { publish: vi.fn() },
}));
test('Creates a registration event', async () => {
const { createRegistrationEvent } = await import('@app/store/sync/registration-sync');
const { store } = await import('@app/store');
const { loadStateFiles } = await import('@app/store/modules/emhttp');
// Load state files into store
await store.dispatch(loadStateFiles());
const config = await store.dispatch(loadStateFiles()).unwrap();
await store.dispatch(loadRegistrationKey());
expect(config.var.regFile).toBe('/app/dev/Unraid.net/Pro.key');
const state = store.getState();
const registrationEvent = createRegistrationEvent(state);
@@ -19,7 +23,7 @@ test('Creates a registration event', async () => {
"registration": {
"guid": "13FE-4200-C300-58C372A52B19",
"keyFile": {
"contents": null,
"contents": "hVs1tLjvC9FiiQsIwIQ7G1KszAcexf0IneThhnmf22SB0dGs5WzRkqMiSMmt2DtR5HOXFUD32YyxuzGeUXmky3zKpSu6xhZNKVg5atGM1OfvkzHBMldI3SeBLuUFSgejLbpNUMdTrbk64JJdbzle4O8wiQgkIpAMIGxeYLwLBD4zHBcfyzq40QnxG--HcX6j25eE0xqa2zWj-j0b0rCAXahJV2a3ySCbPzr1MvfPRTVb0rr7KJ-25R592hYrz4H7Sc1B3p0lr6QUxHE6o7bcYrWKDRtIVoZ8SMPpd1_0gzYIcl5GsDFzFumTXUh8NEnl0Q8hwW1YE-tRc6Y_rrvd7w",
"location": "/app/dev/Unraid.net/Pro.key",
},
"state": "PRO",

View File

@@ -1,7 +1,7 @@
import { type Mapping } from '@runonflux/nat-upnp';
import { expect, test, vi } from 'vitest';
import { getWanPortForUpnp } from '@app/upnp/helpers';
import { getWanPortForUpnp } from '@app/upnp/helpers.js';
test('it successfully gets a wan port given no exclusions', () => {
const port = getWanPortForUpnp(null, 36_000, 38_000);

View File

@@ -1,6 +1,6 @@
import { describe, expect, it } from 'vitest';
import { formatDatetime } from '@app/utils';
import { csvStringToArray, formatDatetime } from '@app/utils.js';
describe('formatDatetime', () => {
const testDate = new Date('2024-02-14T12:34:56');
@@ -69,3 +69,37 @@ describe('formatDatetime', () => {
);
});
});
describe('csvStringToArray', () => {
it('returns an empty array for null, undefined, or empty strings', () => {
expect(csvStringToArray(null)).toEqual([]);
expect(csvStringToArray(undefined)).toEqual([]);
expect(csvStringToArray('')).toEqual([]);
});
it('returns an array of strings for a CSV string', () => {
expect(csvStringToArray('one,two,three')).toEqual(['one', 'two', 'three']);
});
it('returns an array of strings for a CSV string with spaces', () => {
expect(csvStringToArray('one, two, three')).toEqual(['one', 'two', 'three']);
});
it('handles single element edge cases', () => {
expect(csvStringToArray('one', { noEmpty: false })).toEqual(['one']);
expect(csvStringToArray('one,', { noEmpty: false })).toEqual(['one', '']);
expect(csvStringToArray(',one', { noEmpty: false })).toEqual(['', 'one']);
expect(csvStringToArray(',one,', { noEmpty: false })).toEqual(['', 'one', '']);
});
it('handles non-empty option', () => {
expect(csvStringToArray('one', { noEmpty: true })).toEqual(['one']);
expect(csvStringToArray('one,', { noEmpty: true })).toEqual(['one']);
expect(csvStringToArray(',one', { noEmpty: true })).toEqual(['one']);
expect(csvStringToArray(',one,', { noEmpty: true })).toEqual(['one']);
});
it('defaults to noEmpty', () => {
expect(csvStringToArray(',one,')).toEqual(['one']);
});
});

View File

@@ -1,14 +1,12 @@
#!/usr/bin/env node
import '@app/dotenv';
import '@app/dotenv.js';
import { execa } from 'execa';
import { CommandFactory } from 'nest-commander';
import { internalLogger, logger } from '@app/core/log';
import { LOG_LEVEL } from '@app/environment';
import { CliModule } from '@app/unraid-api/cli/cli.module';
import { LogService } from '@app/unraid-api/cli/log.service';
import { internalLogger, logger } from '@app/core/log.js';
import { LOG_LEVEL } from '@app/environment.js';
import { CliModule } from '@app/unraid-api/cli/cli.module.js';
import { LogService } from '@app/unraid-api/cli/log.service.js';
const getUnraidApiLocation = async () => {
try {
@@ -22,7 +20,16 @@ const getUnraidApiLocation = async () => {
};
try {
await CommandFactory.run(CliModule, {
// Register plugins and create a dynamic module configuration
const dynamicModule = await CliModule.registerWithPlugins();
// Create a new class that extends CliModule with the dynamic configuration
const DynamicCliModule = class extends CliModule {
static module = dynamicModule.module;
static imports = dynamicModule.imports;
static providers = dynamicModule.providers;
};
await CommandFactory.run(DynamicCliModule, {
cliName: 'unraid-api',
logger: LOG_LEVEL === 'TRACE' ? new LogService() : false, // - enable this to see nest initialization issues
completion: {

View File

@@ -1,11 +1,11 @@
import { uniq } from 'lodash-es';
import type { RootState } from '@app/store';
import { logger } from '@app/core';
import { GRAPHQL_INTROSPECTION } from '@app/environment';
import { getServerIps, getUrlForField } from '@app/graphql/resolvers/subscription/network';
import { getters, store } from '@app/store';
import { FileLoadStatus } from '@app/store/types';
import type { RootState } from '@app/store/index.js';
import { logger } from '@app/core/log.js';
import { GRAPHQL_INTROSPECTION } from '@app/environment.js';
import { getServerIps, getUrlForField } from '@app/graphql/resolvers/subscription/network.js';
import { getters, store } from '@app/store/index.js';
import { FileLoadStatus } from '@app/store/types.js';
const getAllowedSocks = (): string[] => [
// Notifier bridge

View File

@@ -1,5 +1,5 @@
import { getters } from '@app/store';
import { FileLoadStatus } from '@app/store/types';
import { getters } from '@app/store/index.js';
import { FileLoadStatus } from '@app/store/types.js';
/**
* Unraid version string.

View File

@@ -1,6 +1,6 @@
import { satisfies } from 'semver';
import { getters } from '@app/store';
import { getters } from '@app/store/index.js';
/**
* Compare version against the current unraid version.

View File

@@ -2,7 +2,7 @@ import { join } from 'path';
import type { JSONWebKeySet } from 'jose';
import { PORT } from '@app/environment';
import { PORT } from '@app/environment.js';
export const getInternalApiAddress = (isHttp = true, nginxPort = 80) => {
const envPort = PORT;

Some files were not shown because too many files have changed in this diff Show More