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)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](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) |
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](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) |
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](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) |
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](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) |
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](https://docs.renovatebot.com/merge-confidence/)
|
[](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
-
[#​2791](https://redirect.github.com/graphql-hive/graphql-scalars/pull/2791)
[`3e1e924`](3e1e924b93)
Thanks [@​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
[@​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
[@​eslint/js](https://redirect.github.com/eslint/js) from 9.20.0
to 9.21.0 by
[@​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
[@​types/node](https://redirect.github.com/types/node) from
22.13.4 to 22.13.5 by
[@​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
[@​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
[@​eslint/eslintrc](https://redirect.github.com/eslint/eslintrc)
from 3.2.0 to 3.3.0 by
[@​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
[@​eslint/compat](https://redirect.github.com/eslint/compat) from
1.2.6 to 1.2.7 by
[@​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
[@​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
[@​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
[@​typescript-eslint/eslint-plugin](https://redirect.github.com/typescript-eslint/eslint-plugin)
from 8.24.1 to 8.25.0 by
[@​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
[@​typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser)
from 8.24.1 to 8.25.0 by
[@​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
[@​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
[@​nestjs/testing](https://redirect.github.com/nestjs/testing)
from 11.0.10 to 11.0.11 by
[@​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
[@​types/node](https://redirect.github.com/types/node) from
22.13.5 to 22.13.8 by
[@​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
[@​nestjs/platform-express](https://redirect.github.com/nestjs/platform-express)
from 11.0.10 to 11.0.11 by
[@​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
[@​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
[@​nestjs/core](https://redirect.github.com/nestjs/core) from
11.0.10 to 11.0.11 by
[@​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
[@​nestjs/platform-fastify](https://redirect.github.com/nestjs/platform-fastify)
from 11.0.10 to 11.0.11 by
[@​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
[@​nestjs/common](https://redirect.github.com/nestjs/common) from
11.0.10 to 11.0.11 by
[@​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
[@​types/node](https://redirect.github.com/types/node) from
22.13.8 to 22.13.9 by
[@​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
[@​typescript-eslint/eslint-plugin](https://redirect.github.com/typescript-eslint/eslint-plugin)
from 8.25.0 to 8.26.0 by
[@​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
[@​typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser)
from 8.25.0 to 8.26.0 by
[@​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
[@​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
[@​types/node](https://redirect.github.com/types/node) from
22.13.9 to 22.13.10 by
[@​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
[@​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
[@​typescript-eslint/parser](https://redirect.github.com/typescript-eslint/parser)
from 8.26.0 to 8.26.1 by
[@​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
[@​typescript-eslint/eslint-plugin](https://redirect.github.com/typescript-eslint/eslint-plugin)
from 8.26.0 to 8.26.1 by
[@​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
[@​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
[@​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
- [@​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
[@​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
[@​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
[@​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
[@​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
[@​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
[@​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
[@​sheremet-va](https://redirect.github.com/sheremet-va) and
[@​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
[@​testing-library/dom](https://redirect.github.com/testing-library/dom)
from dependencies
[#​7555](https://redirect.github.com/vitest-dev/vitest/issues/7555))"
- by [@​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
[@​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
[@​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
[@​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
[@​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
[@​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
[@​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
[@​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
[@​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
[@​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
[@​testing-library/dom](https://redirect.github.com/testing-library/dom)
from dependencies - by
[@​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
[@​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
[@​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
[@​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
[@​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
[@​jycouet](https://redirect.github.com/jycouet) and
[@​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
[@​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.
[#​1119](https://redirect.github.com/google/zx/issues/1119)
[#​1122](https://redirect.github.com/google/zx/pull/1122)
[#​1123](https://redirect.github.com/google/zx/pull/1123)
[#​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
[#​1122](https://redirect.github.com/google/zx/pull/1122)
- Switched to TS 5.8
[#​1120](https://redirect.github.com/google/zx/pull/1120)
- Applied [zizmor](https://woodruffw.github.io/zizmor/) to check GHA
workflows
[#​1126](https://redirect.github.com/google/zx/pull/1126)
- Prettier is now enabled as a pre-commit hook
[#​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
[#​1116](https://redirect.github.com/google/zx/pull/1116)
[#​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.
[#​999](https://redirect.github.com/google/zx/issues/999)
[#​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
[#​1104](https://redirect.github.com/google/zx/pull/1104)
[#​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
[#​1108](https://redirect.github.com/google/zx/pull/1108)
[#​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
[#​1102](https://redirect.github.com/google/zx/pull/1102)
- Made `ProcessOutput` iterable
[#​1101](https://redirect.github.com/google/zx/pull/1101)
- Handle inappropriate `ProcessPromise` instantiation
[#​1097](https://redirect.github.com/google/zx/pull/1097)
[#​1098](https://redirect.github.com/google/zx/pull/1098)
- Pass origin error as `ProcessOuput` cause
[#​1110](https://redirect.github.com/google/zx/pull/1110)
- Separated build and release steps
[#​1106](https://redirect.github.com/google/zx/pull/1106)
- Internal improvements
- Introduced API bus
[#​1083](https://redirect.github.com/google/zx/pull/1083)
- Optimized `ProcessOutput` inners
[#​1096](https://redirect.github.com/google/zx/pull/1096)
[#​1095](https://redirect.github.com/google/zx/pull/1095)
- Pinned deps
[#​1099](https://redirect.github.com/google/zx/pull/1099)
[#​1100](https://redirect.github.com/google/zx/pull/1100)
- Switched to explicit `.ts` extensions for relative imports
[#​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>
Unraid UI
A Vue 3 component library providing a set of reusable, accessible UI components for Unraid development.
Features
- ⚡️ Built with Vue 3 and TypeScript
- 🎭 Storybook documentation
- ✅ Tested components
- 🎪 Built on top of TailwindCSS and Shadcn/UI
Installation
Make sure you have the peer dependencies installed:
npm install vue@^3.3.0 tailwindcss@^3.0.0
Setup
1. Add CSS
Import the component library styles in your main entry file:
import '@unraid/ui/style.css';
2. Configure TailwindCSS
Create a tailwind.config.ts file with the following configuration:
import tailwindConfig from '@unraid/ui/tailwind.config.ts';
import type { Config } from 'tailwindcss';
export default {
presets: [tailwindConfig],
content: [
// ... your content paths
'./components/**/*.{js,vue,ts}',
'./layouts/**/*.vue',
'./pages/**/*.vue',
],
theme: {
extend: {
// your theme extensions
},
},
} satisfies Partial<Config>;
This configuration:
- Uses the Unraid UI library's Tailwind config as a preset
- Properly types your configuration with TypeScript
- Allows you to extend the base theme while maintaining all Unraid UI defaults
Usage
<script setup lang="ts">
import { Button } from '@unraid/ui';
</script>
<template>
<Button variant="primary"> Click me </Button>
</template>
Development
Local Development
Install dependencies:
npm install
Start Storybook development server:
npm run storybook
This will start Storybook at http://localhost:6006
Building
npm run build
Testing
Run tests:
npm run test
Run tests with UI:
npm run test:ui
Generate coverage report:
npm run coverage
Type Checking
npm run typecheck
Scripts
dev: Start development serverbuild: Build for productionpreview: Preview production buildtest: Run teststest:ui: Run tests with UIcoverage: Generate test coverageclean: Remove build artifactstypecheck: Run type checkingstorybook: Start Storybook development serverbuild-storybook: Build Storybook for production
License
Component Development
Installing Shadcn Components
- Install a new component using the Shadcn CLI:
npx shadcn-vue@latest add [component-name]
-
The component will be installed in the root components folder. Move it to the appropriate subfolder based on its type:
- Form components →
src/components/form/ - Layout components →
src/components/layout/ - Common components →
src/components/common/ - Brand components →
src/components/brand/
- Form components →
-
Update any imports in your codebase to reflect the new component location.
Component Variants Pattern
We use the class-variance-authority (CVA) package to manage component variants. Each component that supports variants should follow this pattern:
- Create a variants file (e.g.,
button.variants.ts):
import { cva } from 'class-variance-authority';
export const buttonVariants = cva('base-classes-here', {
variants: {
variant: {
primary: 'variant-specific-classes',
secondary: 'variant-specific-classes',
// ... other variants
},
size: {
sm: 'size-specific-classes',
md: 'size-specific-classes',
lg: 'size-specific-classes',
},
},
defaultVariants: {
variant: 'primary',
size: 'md',
},
});
- Use the variants in your component (e.g.,
Button.vue):
<script setup lang="ts">
import { computed } from "vue";
import { buttonVariants } from "./button.variants";
import { cn } from "@/lib/utils";
export interface ButtonProps {
variant?: "primary" | "secondary" | /* other variants */;
size?: "sm" | "md" | "lg";
class?: string;
}
const props = withDefaults(defineProps<ButtonProps>(), {
variant: "primary",
size: "md",
});
const buttonClass = computed(() => {
return cn(
buttonVariants({ variant: props.variant, size: props.size }),
props.class
);
});
</script>
<template>
<button :class="buttonClass">
<slot />
</button>
</template>
Storybook Development
We use Storybook for component development and documentation. To start the Storybook development server:
npm run storybook
This will start Storybook at http://localhost:6006
When creating stories for your components:
- Place story files in the
storiesdirectory - Name your story files as
ComponentName.stories.ts - Include examples of all variants and states
- Add documentation using JSDoc comments
Example story file:
import type { Meta, StoryObj } from '@storybook/vue3';
import { Button } from '../src/components/common/button';
const meta = {
title: 'Components/Button',
component: Button,
tags: ['autodocs'],
argTypes: {
variant: {
control: 'select',
options: ['primary', 'secondary', 'outline'],
},
size: {
control: 'select',
options: ['sm', 'md', 'lg'],
},
},
} satisfies Meta<typeof Button>;
export default meta;
type Story = StoryObj<typeof meta>;
export const Primary: Story = {
args: {
variant: 'primary',
size: 'md',
},
};
export const Secondary: Story = {
args: {
variant: 'secondary',
size: 'md',
},
};