Compare commits

...

197 Commits

Author SHA1 Message Date
LongYinan
e96b86ec71 ci: add write permission to release workflow 2024-03-06 15:01:21 +08:00
EYHN
633a5bab53 fix(core): fix cmdk not show current page (#6031) 2024-03-06 06:31:38 +00:00
Fangdun Tsai
5d63ca0bab fix(core): canvas font loading in desktop (#6025) 2024-03-06 13:42:56 +08:00
fourdim
0ff1e8d2f7 fix: breaking function signature on showImportModal onSuceessHandler (#6011)
This will fix the breaking change introduced in
da781df473
This should be merged after the next BlockSuite bump.
2024-03-05 18:51:39 +00:00
EYHN
dce3b59c52 fix(core): fix falsy e2e (#6027) 2024-03-05 15:25:19 +00:00
EYHN
5d8dea084c fix(core): fix journal missing after refresh (#6022) 2024-03-05 11:42:09 +00:00
JimmFly
c1afdb9bd6 fix(core): unexpected line breaks (#6019) 2024-03-05 10:02:22 +00:00
EYHN
ceec54b423 fix(docs): fix bug-report template (#6020) 2024-03-05 09:52:57 +00:00
EYHN
e9d51f6c96 fix(component): journal header button no responce (#6021) 2024-03-05 09:40:19 +00:00
Peng Xiao
65b32156a8 build: do not fail build for a non-fatal error (#6017) 2024-03-05 08:27:47 +00:00
EYHN
7c55472b78 docs: update bug-report.yml (#6018) 2024-03-05 16:27:14 +08:00
Peng Xiao
55ecd92722 fix(electron): windows distribution name (#6014) 2024-03-05 07:53:30 +00:00
Peng Xiao
63e82cca78 build: remove incorrect project dep (#6016) 2024-03-05 07:44:13 +00:00
Lye Hongtao
5bebcec2eb feat: bump blocksuite (#6015)
## Features
- https://github.com/toeverything/BlockSuite/pull/6379 @doodlewind
- https://github.com/toeverything/BlockSuite/pull/6375 @doodlewind
- https://github.com/toeverything/BlockSuite/pull/6370 @donteatfriedrice

## Bugfix
- https://github.com/toeverything/BlockSuite/pull/6380 @donteatfriedrice
- https://github.com/toeverything/BlockSuite/pull/6377 @doouding
- https://github.com/toeverything/BlockSuite/pull/6376 @fourdim
- https://github.com/toeverything/BlockSuite/pull/6374 @regischen

## Misc
- docs: update examples desc
- ci: start publishing 0.13 canary
2024-03-05 07:35:05 +00:00
EYHN
7c76c25a9c refactor(core): new back&forward button base on workbench (#6012)
# feature:

## In Browser:
- hidden back&forward button in sidebar.
- back and forward is equal with `window.history.back()` `window.history.forward()`

## In Desktop:
- Back and forward can be controlled through the sidebar, cmdk, and shortcut keys.
- back and forward act on the currently **active** view.
- buttons change disable&enable style based on current active view history

# Refactor:

Move app-sidebar and app-container from @affine/component to @affine/core
2024-03-05 07:01:24 +00:00
Lye Hongtao
b06aeb22dd fix: view in edgeless button of surface block (#6013)
Co-authored-by: donteatfriedrice <huisheng.chen7788@outlook.com>
Co-authored-by: Chen <99816898+donteatfriedrice@users.noreply.github.com>
2024-03-05 14:35:53 +08:00
Chen
ebf7a74387 feat: bump blocksuite (#6010) 2024-03-05 14:19:11 +08:00
LongYinan
43813d7f86 build(deps): bump mio from 0.8.9 to 0.8.11 (#6009)
Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.9 to 0.8.11.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md">mio's changelog</a>.</em></p>
<blockquote>
<h1>0.8.11</h1>
<ul>
<li>Fix receiving IOCP events after deregistering a Windows named pipe
(<a href="https://redirect.github.com/tokio-rs/mio/pull/1760">tokio-rs/mio#1760</a>, backport pr:
<a href="https://redirect.github.com/tokio-rs/mio/pull/1761">tokio-rs/mio#1761</a>).</li>
</ul>
<h1>0.8.10</h1>
<h2>Added</h2>
<ul>
<li>Solaris support
(<a href="https://redirect.github.com/tokio-rs/mio/pull/1724">tokio-rs/mio#1724</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="0328bdef90"><code>0328bde</code></a> Release v0.8.11</li>
<li><a href="7084498512"><code>7084498</code></a> Fix warnings</li>
<li><a href="90d4fe00df"><code>90d4fe0</code></a> named-pipes: fix receiving IOCP events after deregister</li>
<li><a href="c710a307f8"><code>c710a30</code></a> Add v0.8.x to the CI</li>
<li><a href="c29e21c244"><code>c29e21c</code></a> Release v0.8.10</li>
<li><a href="f6a20da1c8"><code>f6a20da</code></a> Add Solaris operating system support (<a href="https://redirect.github.com/tokio-rs/mio/issues/1724">#1724</a>)</li>
<li>See full diff in <a href="https://github.com/tokio-rs/mio/compare/v0.8.9...v0.8.11">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=mio&package-manager=cargo&previous-version=0.8.9&new-version=0.8.11)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/toeverything/AFFiNE/network/alerts).

</details>
2024-03-05 04:02:36 +00:00
LongYinan
9a3ae9302e chore: bump up all non-major dependencies (#5964)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@aws-sdk/client-s3](https://togithub.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3) ([source](https://togithub.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3)) | [`3.523.0` -> `3.525.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.523.0/3.525.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.525.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.525.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.523.0/3.525.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.523.0/3.525.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@node-rs/jsonwebtoken](https://togithub.com/napi-rs/node-rs) | [`^0.4.0` -> `^0.5.0`](https://renovatebot.com/diffs/npm/@node-rs%2fjsonwebtoken/0.4.0/0.5.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@node-rs%2fjsonwebtoken/0.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@node-rs%2fjsonwebtoken/0.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@node-rs%2fjsonwebtoken/0.4.0/0.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@node-rs%2fjsonwebtoken/0.4.0/0.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nx/vite](https://nx.dev) ([source](https://togithub.com/nrwl/nx/tree/HEAD/packages/vite)) | [`18.0.5` -> `18.0.7`](https://renovatebot.com/diffs/npm/@nx%2fvite/18.0.5/18.0.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nx%2fvite/18.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nx%2fvite/18.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nx%2fvite/18.0.5/18.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nx%2fvite/18.0.5/18.0.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@opentelemetry/exporter-prometheus](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.48.0` -> `^0.49.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fexporter-prometheus/0.48.0/0.49.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fexporter-prometheus/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fexporter-prometheus/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fexporter-prometheus/0.48.0/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fexporter-prometheus/0.48.0/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@opentelemetry/instrumentation](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.48.0` -> `^0.49.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation/0.48.0/0.49.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation/0.48.0/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation/0.48.0/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@opentelemetry/instrumentation-http](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.48.0` -> `^0.49.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-http/0.48.0/0.49.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-http/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-http/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-http/0.48.0/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-http/0.48.0/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@opentelemetry/sdk-node](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-sdk-node) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.48.0` -> `^0.49.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fsdk-node/0.48.0/0.49.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fsdk-node/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fsdk-node/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fsdk-node/0.48.0/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fsdk-node/0.48.0/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [jotai-effect](https://togithub.com/jotaijs/jotai-effect) | [`^0.5.0` -> `^0.6.0`](https://renovatebot.com/diffs/npm/jotai-effect/0.5.0/0.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jotai-effect/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jotai-effect/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jotai-effect/0.5.0/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jotai-effect/0.5.0/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [yarn](https://togithub.com/yarnpkg/berry) ([source](https://togithub.com/yarnpkg/berry/tree/HEAD/packages/yarnpkg-cli)) | [`4.1.0` -> `4.1.1`](https://renovatebot.com/diffs/npm/yarn/4.1.0/4.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/yarn/4.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/yarn/4.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/yarn/4.1.0/4.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/yarn/4.1.0/4.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>aws/aws-sdk-js-v3 (@&#8203;aws-sdk/client-s3)</summary>

### [`v3.525.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35250-2024-02-29)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.523.0...v3.525.0)

**Note:** Version bump only for package [@&#8203;aws-sdk/client-s3](https://togithub.com/aws-sdk/client-s3)

</details>

<details>
<summary>napi-rs/node-rs (@&#8203;node-rs/jsonwebtoken)</summary>

### [`v0.5.1`](https://togithub.com/napi-rs/node-rs/releases/tag/%40node-rs/jsonwebtoken%400.5.1)

[Compare Source](https://togithub.com/napi-rs/node-rs/compare/@node-rs/jsonwebtoken@0.5.0...@node-rs/jsonwebtoken@0.5.1)

#### What's Changed

-   chore(deps): lock file maintenance by [@&#8203;renovate](https://togithub.com/renovate) in [https://github.com/napi-rs/node-rs/pull/800](https://togithub.com/napi-rs/node-rs/pull/800)
-   fix(jsonwebtoken): handle error in decodeHeader by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/node-rs/pull/801](https://togithub.com/napi-rs/node-rs/pull/801)

**Full Changelog**: https://github.com/napi-rs/node-rs/compare/[@&#8203;node-rs/crc32](https://togithub.com/node-rs/crc32)[@&#8203;1](https://togithub.com/1).10.0...[@&#8203;node-rs/jsonwebtoken](https://togithub.com/node-rs/jsonwebtoken)[@&#8203;0](https://togithub.com/0).5.1

### [`v0.5.0`](https://togithub.com/napi-rs/node-rs/releases/tag/%40node-rs/jsonwebtoken%400.5.0)

[Compare Source](https://togithub.com/napi-rs/node-rs/compare/@node-rs/jsonwebtoken@0.4.0...@node-rs/jsonwebtoken@0.5.0)

#### What's Changed

-   fix(jsonwebtoken): num typings by [@&#8203;tada5hi](https://togithub.com/tada5hi) in [https://github.com/napi-rs/node-rs/pull/777](https://togithub.com/napi-rs/node-rs/pull/777)
-   feat(jsonwebtoken): flatten claims to align with rfc by [@&#8203;tada5hi](https://togithub.com/tada5hi) in [https://github.com/napi-rs/node-rs/pull/780](https://togithub.com/napi-rs/node-rs/pull/780)
-   feat(jsonwebtoken): expose decode header utility by [@&#8203;tada5hi](https://togithub.com/tada5hi) in [https://github.com/napi-rs/node-rs/pull/795](https://togithub.com/napi-rs/node-rs/pull/795)
-   chore(\*): upgrade NAPI-RS cli and bindings by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/node-rs/pull/797](https://togithub.com/napi-rs/node-rs/pull/797)
-   feat(jsonwebtoken): support wasm32-wasi target by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/node-rs/pull/798](https://togithub.com/napi-rs/node-rs/pull/798)

#### New Contributors

-   [@&#8203;tada5hi](https://togithub.com/tada5hi) made their first contribution in [https://github.com/napi-rs/node-rs/pull/777](https://togithub.com/napi-rs/node-rs/pull/777)

**Full Changelog**: https://github.com/napi-rs/node-rs/compare/[@&#8203;node-rs/argon2](https://togithub.com/node-rs/argon2)[@&#8203;1](https://togithub.com/1).7.0...[@&#8203;node-rs/jsonwebtoken](https://togithub.com/node-rs/jsonwebtoken)[@&#8203;0](https://togithub.com/0).5.0

</details>

<details>
<summary>nrwl/nx (@&#8203;nx/vite)</summary>

### [`v18.0.7`](https://togithub.com/nrwl/nx/releases/tag/18.0.7)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.0.6...18.0.7)

#### 18.0.7 (2024-03-04)

##### 🩹 Fixes

-   **core:** target defaults should represent nx.json in source info ([#&#8203;22080](https://togithub.com/nrwl/nx/pull/22080))
-   **nextjs:** Add spec files when creating a next app ([#&#8203;22079](https://togithub.com/nrwl/nx/pull/22079))
-   **release:** skip lock file update if workspaces are not enabled ([#&#8203;22055](https://togithub.com/nrwl/nx/pull/22055))
-   **remix:** ensure component-testing is exported correctly [#&#8203;22091](https://togithub.com/nrwl/nx/issues/22091) ([#&#8203;22095](https://togithub.com/nrwl/nx/pull/22095), [#&#8203;22091](https://togithub.com/nrwl/nx/issues/22091))
-   **storybook:** handle main.js file correctly in storybook plugin ([#&#8203;22081](https://togithub.com/nrwl/nx/pull/22081))
-   **testing:** calculate correct support file path in cypress e2e preset ([#&#8203;22096](https://togithub.com/nrwl/nx/pull/22096))

##### ❤️  Thank You

-   Austin Fahsl [@&#8203;fahslaj](https://togithub.com/fahslaj)
-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)

### [`v18.0.6`](https://togithub.com/nrwl/nx/releases/tag/18.0.6)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.0.5...18.0.6)

##### 18.0.6 (2024-02-29)

##### 🩹 Fixes

-   **core:** nextjs-standalone generates package scripts consistent with create-next-app ([#&#8203;21996](https://togithub.com/nrwl/nx/pull/21996))
-   **misc:** make sure to add e2e crystal plugin ([#&#8203;22041](https://togithub.com/nrwl/nx/pull/22041))
-   **misc:** fix buildable libs utils calculating dependent projects from task graph ([#&#8203;22015](https://togithub.com/nrwl/nx/pull/22015))
-   **node:** Increase timeout for CI ([#&#8203;22003](https://togithub.com/nrwl/nx/pull/22003))
-   **nuxt:** fix storybook preview config path ([#&#8203;22020](https://togithub.com/nrwl/nx/pull/22020))
-   **nuxt:** Add e2e-ci and serve-static targets ([#&#8203;22056](https://togithub.com/nrwl/nx/pull/22056))
-   **release:** currentVersionResolver git-tag should prefer merged tags ([#&#8203;22082](https://togithub.com/nrwl/nx/pull/22082))

##### ❤️  Thank You

-   Austin Fahsl [@&#8203;fahslaj](https://togithub.com/fahslaj)
-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)
-   Katerina Skroumpelou [@&#8203;mandarini](https://togithub.com/mandarini)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)

</details>

<details>
<summary>open-telemetry/opentelemetry-js (@&#8203;opentelemetry/exporter-prometheus)</summary>

### [`v0.49.1`](7be35c7845...3920b158d0)

[Compare Source](7be35c7845...3920b158d0)

### [`v0.49.0`](828f2ed730...7be35c7845)

[Compare Source](828f2ed730...7be35c7845)

</details>

<details>
<summary>jotaijs/jotai-effect (jotai-effect)</summary>

### [`v0.6.0`](https://togithub.com/jotaijs/jotai-effect/releases/tag/v0.6.0)

[Compare Source](https://togithub.com/jotaijs/jotai-effect/compare/v0.5.0...v0.6.0)

#### What's Changed

-   rethrow errors thrown during effectFn and cleanup by [@&#8203;dmaskasky](https://togithub.com/dmaskasky) in [https://github.com/jotaijs/jotai-effect/pull/33](https://togithub.com/jotaijs/jotai-effect/pull/33)

**Full Changelog**: https://github.com/jotaijs/jotai-effect/compare/v0.5.0...v0.6.0

</details>

<details>
<summary>yarnpkg/berry (yarn)</summary>

### [`v4.1.1`](52909a5e0d...6b7621f073)

[Compare Source](52909a5e0d...6b7621f073)

</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://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

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

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjAuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIyMC4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-03-05 03:46:56 +00:00
Cats Juice
358e1e99c5 feat(core): set journal's really created time (#5968)
closes #5958;

This makes the creation date of the journal correspond to the date, and the creation time is the real creation time.
2024-03-05 03:37:23 +00:00
Peng Xiao
3fcbfe4d30 fix(electron): electron updater issues (#6005)
- generate-yml.js does not filter files correctly
- add version to generated bundles
- change `.AppImage` to `.appimage`. See https://github.com/electron-userland/electron-builder/blob/master/packages/electron-updater/src/providers/Provider.ts#L88
2024-03-05 03:27:52 +00:00
EYHN
a9be19ce6c fix(core): fix style break when scroll to block (#6001) 2024-03-04 11:43:10 +00:00
EYHN
d935cf9d4d fix(core): dont break workspace when page load failed (#5988) 2024-03-04 11:32:56 +00:00
tzyoo
ee54e00a03 fix(core): upgrade dialog close button layout level (#6004) 2024-03-04 11:30:25 +00:00
Cats Juice
2275eee5b2 feat(core): resize and reorder split-view (#5994) 2024-03-04 11:19:39 +00:00
Peng Xiao
7b31363c51 fix(electron): do not open external links in the browser for internal links in electron (#5997) 2024-03-04 09:39:03 +00:00
EYHN
c599715963 feat(core): split right sidebar (#5971)
https://github.com/toeverything/AFFiNE/assets/13579374/c846c069-aa32-445d-b59b-b773a9b05ced

Now each view has a general container, the yellow area is the general container part, and the green part is the routing specific part.

![CleanShot 2024-03-01 at 11.47.35@2x.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/g3jz87HxbjOJpXV3FPT7/9a9f6ad6-2207-42e5-ae66-f7426bc9f3fc.png)
2024-03-04 06:42:12 +00:00
Peng Xiao
e2a31ea1fc fix(core): some ui style issues (#5995)
Increase page info toggle click area:

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/7f712008-c2db-4522-81b0-6c18d2aea421.png)

fix history modal page height
2024-03-04 03:57:45 +00:00
JimmFly
ffda9a0567 feat(core): separate runtimeConfig for e2e tests and deployment (#5976)
Prior to modification, it will function for both `deploy` and `e2e-test`. Consequently, `allowLocalWorkspace` is also set to `true` in the production environment.
https://github.com/toeverything/AFFiNE/actions/runs/8093473180/job/22116199541#step:5:120
2024-03-03 12:00:11 +00:00
Peng Xiao
a1ea19fcb7 fix: optimize history animation (#5973)
- adjust timing
- make sure card do not show the bottom border on transitioning

<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/T2klNLEk0wxLh4NRDzhk/7a225ec1-eb33-45ab-bf27-646bb2519a83.mp4">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/T2klNLEk0wxLh4NRDzhk/7a225ec1-eb33-45ab-bf27-646bb2519a83.mp4">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/7a225ec1-eb33-45ab-bf27-646bb2519a83.mp4">Kapture 2024-03-01 at 10.56.09.mp4</video>
2024-03-01 06:08:08 +00:00
EYHN
de939bb6f6 fix(core): fix page mode scroll bar (#5955) 2024-03-01 04:46:15 +00:00
JimmFly
ff7e7f237f fix(core): update src in video tag to correct URL (#5974)
In app.affine.pro the video is not displayed correctly.

<img width="1026" alt="image" src="https://github.com/toeverything/AFFiNE/assets/102217452/8e9d9bb2-f973-433e-88c9-bedfe0f55935">
2024-03-01 04:36:37 +00:00
EYHN
a231884d9e fix(storybook): fix storybook test (#5970) 2024-03-01 02:30:04 +00:00
Peng Xiao
d4e78dd3d0 feat: add animation for history preview (#5966)
<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/T2klNLEk0wxLh4NRDzhk/5ce45d13-1117-4853-a066-e8ab1446eb4f.mp4">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/T2klNLEk0wxLh4NRDzhk/5ce45d13-1117-4853-a066-e8ab1446eb4f.mp4">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/5ce45d13-1117-4853-a066-e8ab1446eb4f.mp4">Kapture 2024-02-29 at 18.54.15.mp4</video>
2024-02-29 14:08:21 +00:00
EYHN
78ce30db69 fix(core): fix editor sidebar (#5965) 2024-02-29 13:59:20 +00:00
Cats Juice
aaf048fcb8 chore(core): update journal's daily count label (#5967)
[tov-568](https://linear.app/affine-design/issue/TOV-568/journal-聚合的部分的名称需要修改一下)
2024-02-29 13:50:09 +00:00
Peng Xiao
752c8580ae fix: remove vite-tsconfig-paths (#5960)
It will cause storybook from running.
related to https://github.com/aleclarson/vite-tsconfig-paths/issues/132

We are not actually using `vite-tsconfig-paths` now because we rely on package.json's export field to do path mapping.
2024-02-29 07:58:41 +00:00
LongYinan
6f8a4d7bd5 chore: bump up all non-major dependencies (#5897)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@aws-sdk/client-s3](https://togithub.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3) ([source](https://togithub.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3)) | [`3.515.0` -> `3.523.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.515.0/3.523.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.523.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.523.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.515.0/3.523.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.515.0/3.523.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@napi-rs/cli](https://togithub.com/napi-rs/napi-rs) | [`3.0.0-alpha.41` -> `3.0.0-alpha.43`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.0.0-alpha.41/3.0.0-alpha.43) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@napi-rs%2fcli/3.0.0-alpha.43?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@napi-rs%2fcli/3.0.0-alpha.43?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@napi-rs%2fcli/3.0.0-alpha.41/3.0.0-alpha.43?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@napi-rs%2fcli/3.0.0-alpha.41/3.0.0-alpha.43?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@nx/vite](https://nx.dev) ([source](https://togithub.com/nrwl/nx/tree/HEAD/packages/vite)) | [`18.0.4` -> `18.0.5`](https://renovatebot.com/diffs/npm/@nx%2fvite/18.0.4/18.0.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nx%2fvite/18.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nx%2fvite/18.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nx%2fvite/18.0.4/18.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nx%2fvite/18.0.4/18.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>aws/aws-sdk-js-v3 (@&#8203;aws-sdk/client-s3)</summary>

### [`v3.523.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35230-2024-02-27)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.521.0...v3.523.0)

**Note:** Version bump only for package [@&#8203;aws-sdk/client-s3](https://togithub.com/aws-sdk/client-s3)

### [`v3.521.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35210-2024-02-23)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.515.0...v3.521.0)

##### Features

-   requestHandler ctor param pass-through ([#&#8203;5820](https://togithub.com/aws/aws-sdk-js-v3/issues/5820)) ([9fec71d](9fec71d193))

</details>

<details>
<summary>napi-rs/napi-rs (@&#8203;napi-rs/cli)</summary>

### [`v3.0.0-alpha.43`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.43)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.42...@napi-rs/cli@3.0.0-alpha.43)

##### What's Changed

-   fix(cli): cleanup js binding template by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1984](https://togithub.com/napi-rs/napi-rs/pull/1984)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.42...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.43

### [`v3.0.0-alpha.42`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.42)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.41...@napi-rs/cli@3.0.0-alpha.42)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.16.0...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.42

##### What's Changed

-   chore: fix renovate path and dedupe electron versions by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1974](https://togithub.com/napi-rs/napi-rs/pull/1974)
-   refactor(cli): refactor js-binding to support easier bundling. by [@&#8203;everett1992](https://togithub.com/everett1992) in [https://github.com/napi-rs/napi-rs/pull/1957](https://togithub.com/napi-rs/napi-rs/pull/1957)

##### New Contributors

-   [@&#8203;everett1992](https://togithub.com/everett1992) made their first contribution in [https://github.com/napi-rs/napi-rs/pull/1957](https://togithub.com/napi-rs/napi-rs/pull/1957)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.15.4...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.42

</details>

<details>
<summary>nrwl/nx (@&#8203;nx/vite)</summary>

### [`v18.0.5`](https://togithub.com/nrwl/nx/releases/tag/18.0.5)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.0.4...18.0.5)

#### 18.0.5 (2024-02-24)

##### 🩹 Fixes

-   **angular:** do not add target defaults for the ng-packagr-lite executor when generating non-buildable library ([#&#8203;21935](https://togithub.com/nrwl/nx/pull/21935))
-   **angular:** ensure generated editor tsconfig in apps only include runtime files ([#&#8203;21945](https://togithub.com/nrwl/nx/pull/21945))
-   **core:** run migrations ordered by their target version ([#&#8203;21799](https://togithub.com/nrwl/nx/pull/21799))
-   **core:** Update NxWelcome connect to cloud ([#&#8203;21830](https://togithub.com/nrwl/nx/pull/21830))
-   **core:** propagate `verbose` flag when running `init` generator dur… ([#&#8203;21868](https://togithub.com/nrwl/nx/pull/21868))
-   **core:** ensure migrate works with yarn PnP ([#&#8203;21824](https://togithub.com/nrwl/nx/pull/21824))
-   **core:** align terminal output padding and remove leading arrow ([#&#8203;21809](https://togithub.com/nrwl/nx/pull/21809))
-   **core:** read all targets from package json when defining target defaults ([#&#8203;21719](https://togithub.com/nrwl/nx/pull/21719))
-   **core:** include nx/nuxt in migrations ([#&#8203;21885](https://togithub.com/nrwl/nx/pull/21885))
-   **core:** do not use the new pty function for older versions of windows ([#&#8203;21854](https://togithub.com/nrwl/nx/pull/21854))
-   **core:** normalize migration target versions when sorting migrations ([#&#8203;21967](https://togithub.com/nrwl/nx/pull/21967))
-   **core:** target defaults application shouldn't include extra scripts ([#&#8203;21970](https://togithub.com/nrwl/nx/pull/21970))
-   **core:** update generated README pages with more useful instructions ([#&#8203;21976](https://togithub.com/nrwl/nx/pull/21976))
-   **devkit:** respect expectComments when parsing json ([#&#8203;21584](https://togithub.com/nrwl/nx/pull/21584))
-   **graph:** fix open project with / in name ([#&#8203;21722](https://togithub.com/nrwl/nx/pull/21722))
-   **js:** nx release-version resolve-version-spec should normalize fetchSpec ([#&#8203;21710](https://togithub.com/nrwl/nx/pull/21710))
-   **js:** swc executor should support inlining on windows ([#&#8203;21801](https://togithub.com/nrwl/nx/pull/21801))
-   **js:** set moduleResolution to Node10 so it is compatible with CommonJS module ([2dac233cf](https://togithub.com/nrwl/nx/commit/2dac233cf))
-   **linter:** fix eslint-plugin migration target version ([#&#8203;21966](https://togithub.com/nrwl/nx/pull/21966))
-   **misc:** logs from rm-default-collection should render properly ([#&#8203;21953](https://togithub.com/nrwl/nx/pull/21953))
-   **misc:** set nx property in root package.json when no replacing script in nx init ([#&#8203;21974](https://togithub.com/nrwl/nx/pull/21974))
-   **nextjs:** Svg should work when svgr is true in next config ([#&#8203;21761](https://togithub.com/nrwl/nx/pull/21761))
-   **nextjs:** Add missing e2e-ci target for cypress ([#&#8203;21805](https://togithub.com/nrwl/nx/pull/21805))
-   **nuxt:** init generator should add [@&#8203;nx/vite](https://togithub.com/nx/vite) to dependencies ([#&#8203;21911](https://togithub.com/nrwl/nx/pull/21911))
-   **nuxt:** turn on autoimport ([#&#8203;21894](https://togithub.com/nrwl/nx/pull/21894))
-   **nuxt:** tsconfig types and output dir ([#&#8203;21934](https://togithub.com/nrwl/nx/pull/21934))
-   **react:** generate correctly when --js is used for module federation host/remote ([#&#8203;20119](https://togithub.com/nrwl/nx/pull/20119))
-   **react:** full support custom secure host for module federation ([#&#8203;21777](https://togithub.com/nrwl/nx/pull/21777))
-   **react:** ensure playwright configuration is using correct port in app gen ([#&#8203;21941](https://togithub.com/nrwl/nx/pull/21941))
-   **react-native:** change gradlew to absolute path ([#&#8203;21725](https://togithub.com/nrwl/nx/pull/21725))
-   **react-native:** add all flag to sync-deps ([#&#8203;21821](https://togithub.com/nrwl/nx/pull/21821))
-   **release:** skip prompt for publish when no version created ([#&#8203;21769](https://togithub.com/nrwl/nx/pull/21769))
-   **release:** use --first-parent to support merged repos ([#&#8203;21686](https://togithub.com/nrwl/nx/pull/21686))
-   **release:** move github release creation to git tasks ([#&#8203;21510](https://togithub.com/nrwl/nx/pull/21510))
-   **remix:** should add remix plugin to nx.json on init correctly ([#&#8203;21827](https://togithub.com/nrwl/nx/pull/21827))
-   **remix:** the output path should respect the remix.config.js in crystal ([#&#8203;21842](https://togithub.com/nrwl/nx/pull/21842))
-   **remix:** adjust remix start script when building ([#&#8203;21883](https://togithub.com/nrwl/nx/pull/21883))
-   **remix:** typo in tsconfig.spec.json update led to invalid tsconfig ([#&#8203;21886](https://togithub.com/nrwl/nx/pull/21886))
-   **repo:** update browser tools to fix ci ([#&#8203;21955](https://togithub.com/nrwl/nx/pull/21955))
-   **testing:** jest should handle root jest.preset.cjs ([#&#8203;21746](https://togithub.com/nrwl/nx/pull/21746))
-   **testing:** fix cypress project targets does not exist ([#&#8203;21785](https://togithub.com/nrwl/nx/pull/21785))
-   **testing:** pin cypress version to avoid issue with verifying cypress ([#&#8203;21917](https://togithub.com/nrwl/nx/pull/21917))
-   **testing:** ensure baseUrl is not passed to playwright cli ([#&#8203;21943](https://togithub.com/nrwl/nx/pull/21943))
-   **testing:** playwright plugin enoent error ([#&#8203;21951](https://togithub.com/nrwl/nx/pull/21951))
-   **testing:** add null checks when reading targets ([#&#8203;21952](https://togithub.com/nrwl/nx/pull/21952))
-   **vite:** normalize vitest cli args in executor ([#&#8203;21870](https://togithub.com/nrwl/nx/pull/21870))
-   **vite:** project conversion generator ([#&#8203;21646](https://togithub.com/nrwl/nx/pull/21646))
-   **vite:** update vitest and use parseCLI ([#&#8203;21890](https://togithub.com/nrwl/nx/pull/21890))
-   **vue:** fixing vue and nuxt welcome templates ([#&#8203;21792](https://togithub.com/nrwl/nx/pull/21792))
-   **vue:** tailwind generator ignoring styleSheet option ([#&#8203;21840](https://togithub.com/nrwl/nx/pull/21840))
-   **webpack:** resolve relative path for assets inputs ([#&#8203;21822](https://togithub.com/nrwl/nx/pull/21822))
-   **webpack:** correctly handle paranthesis in PostCSS in url ([#&#8203;21884](https://togithub.com/nrwl/nx/pull/21884))
-   **webpack:** surface original error when remotes fail to start ([#&#8203;21919](https://togithub.com/nrwl/nx/pull/21919))

##### ❤️  Thank You

-   Austin Fahsl [@&#8203;fahslaj](https://togithub.com/fahslaj)
-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Dan Roujinsky
-   Edouard Bozon [@&#8203;edbzn](https://togithub.com/edbzn)
-   Emily Xiong [@&#8203;xiongemi](https://togithub.com/xiongemi)
-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)
-   Jonathan Cammisuli
-   Julian Martin
-   Katerina Skroumpelou [@&#8203;mandarini](https://togithub.com/mandarini)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Miroslav Jonaš [@&#8203;meeroslav](https://togithub.com/meeroslav)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)
-   Remco Krams
-   Steven Nance [@&#8203;llwt](https://togithub.com/llwt)
-   Tine Kondo [@&#8203;tinesoft](https://togithub.com/tinesoft)
-   Vadim Goy
-   Viktor Pöntinen
-   Zachary DeRose [@&#8203;ZackDeRose](https://togithub.com/ZackDeRose)

</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://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

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

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMDAuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIxMi4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-29 06:51:59 +00:00
regischen
d1e6b23e1a feat: bump blocksuite (#5953) 2024-02-29 14:33:50 +08:00
EYHN
fa534869e1 feat(core): new onboarding template (#5951) 2024-02-29 06:02:32 +00:00
LongYinan
931c29fd31 chore: bump up commitlint monorepo to v19 (major) (#5928)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@commitlint/config-conventional](https://commitlint.js.org/) ([source](https://togithub.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional)) | [`^18.6.2` -> `^19.0.0`](https://renovatebot.com/diffs/npm/@commitlint%2fconfig-conventional/18.6.2/19.0.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@commitlint%2fconfig-conventional/19.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@commitlint%2fconfig-conventional/19.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@commitlint%2fconfig-conventional/18.6.2/19.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@commitlint%2fconfig-conventional/18.6.2/19.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [commitlint](https://commitlint.js.org/) ([source](https://togithub.com/conventional-changelog/commitlint/tree/HEAD/@alias/commitlint)) | [`^18.6.1` -> `^19.0.0`](https://renovatebot.com/diffs/npm/commitlint/18.6.1/19.0.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/commitlint/19.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/commitlint/19.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/commitlint/18.6.1/19.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/commitlint/18.6.1/19.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>conventional-changelog/commitlint (@&#8203;commitlint/config-conventional)</summary>

### [`v19.0.3`](https://togithub.com/conventional-changelog/commitlint/blob/HEAD/@&#8203;commitlint/config-conventional/CHANGELOG.md#1903-2024-02-28)

[Compare Source](https://togithub.com/conventional-changelog/commitlint/compare/v19.0.0...v19.0.3)

**Note:** Version bump only for package [@&#8203;commitlint/config-conventional](https://togithub.com/commitlint/config-conventional)

### [`v19.0.0`](https://togithub.com/conventional-changelog/commitlint/blob/HEAD/@&#8203;commitlint/config-conventional/CHANGELOG.md#1900-2024-02-27)

[Compare Source](https://togithub.com/conventional-changelog/commitlint/compare/v18.6.2...v19.0.0)

-   feat!: migrate to pure ESM ([#&#8203;3850](https://togithub.com/conventional-changelog/commitlint/issues/3850)) ([3423735](342373559b)), closes [#&#8203;3850](https://togithub.com/conventional-changelog/commitlint/issues/3850)

##### Reverts

-   Revert "chore!: minimum node version v20" ([2816783](2816783d00))

##### BREAKING CHANGES

-   migrate to pure ESM

-   feat: migrate to pure ESM

-   chore: update snapshot

-   fix: load `parserPreset` with another `await`

-   test: migrate to vitest

-   test: remove no replacement `--runInBand` test-ci script

-   chore: fix code reviews

-   refactor(load): rewrite resolve logic

-   fix(config-nx-scopes): fix syntax error

-   feat(resolve-extends): add resolveFrom and loadParserPreset

-   feat(load): use resolveFrom and loadParserPreset from resolve-extends

-   test: include only @&#8203;commitlint/\* packages src in coverage

-   test: explicit import vitest utilities

-   test: remove [@&#8203;jest/globals](https://togithub.com/jest/globals) from dependencies

-   fix(resolve-extends): `resolveFrom` output should be platform aware

-   test: restore NO_COLOR to test script

-   chore: fix linting issues

-   fix: should use fileURLToPath instead of pathname for Windows compatibility

-   Apply suggestions from code review

-   fix: should reuse `cli` instead call `yargs()`

-   feat(cli): set terminalWidth as wrap to avoid work break on help

-   Update .eslintrc.cjs

-   feat: migrate [@&#8203;commitlint/config-conventional](https://togithub.com/commitlint/config-conventional) to pure ESM

#### [18.6.2](https://togithub.com/conventional-changelog/commitlint/compare/v18.6.1...v18.6.2) (2024-02-14)

##### Bug Fixes

-   **config-conventional:** use default export ([#&#8203;3911](https://togithub.com/conventional-changelog/commitlint/issues/3911)) ([bc48408](bc4840832f))

#### [18.6.1](https://togithub.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13)

**Note:** Version bump only for package [@&#8203;commitlint/config-conventional](https://togithub.com/commitlint/config-conventional)

</details>

<details>
<summary>conventional-changelog/commitlint (commitlint)</summary>

### [`v19.0.3`](https://togithub.com/conventional-changelog/commitlint/blob/HEAD/@&#8203;alias/commitlint/CHANGELOG.md#1903-2024-02-28)

[Compare Source](https://togithub.com/conventional-changelog/commitlint/compare/v19.0.2...v19.0.3)

**Note:** Version bump only for package commitlint

### [`v19.0.2`](https://togithub.com/conventional-changelog/commitlint/blob/HEAD/@&#8203;alias/commitlint/CHANGELOG.md#1902-2024-02-28)

[Compare Source](https://togithub.com/conventional-changelog/commitlint/compare/v19.0.1...v19.0.2)

**Note:** Version bump only for package commitlint

### [`v19.0.1`](https://togithub.com/conventional-changelog/commitlint/blob/HEAD/@&#8203;alias/commitlint/CHANGELOG.md#1901-2024-02-27)

[Compare Source](https://togithub.com/conventional-changelog/commitlint/compare/v19.0.0...v19.0.1)

**Note:** Version bump only for package commitlint

### [`v19.0.0`](https://togithub.com/conventional-changelog/commitlint/blob/HEAD/@&#8203;alias/commitlint/CHANGELOG.md#1900-2024-02-27)

[Compare Source](https://togithub.com/conventional-changelog/commitlint/compare/v18.6.1...v19.0.0)

-   feat!: migrate to pure ESM ([#&#8203;3850](https://togithub.com/conventional-changelog/commitlint/issues/3850)) ([3423735](342373559b)), closes [#&#8203;3850](https://togithub.com/conventional-changelog/commitlint/issues/3850)

##### Reverts

-   Revert "chore!: minimum node version v20" ([2816783](2816783d00))

##### BREAKING CHANGES

-   migrate to pure ESM

-   feat: migrate to pure ESM

-   chore: update snapshot

-   fix: load `parserPreset` with another `await`

-   test: migrate to vitest

-   test: remove no replacement `--runInBand` test-ci script

-   chore: fix code reviews

-   refactor(load): rewrite resolve logic

-   fix(config-nx-scopes): fix syntax error

-   feat(resolve-extends): add resolveFrom and loadParserPreset

-   feat(load): use resolveFrom and loadParserPreset from resolve-extends

-   test: include only @&#8203;commitlint/\* packages src in coverage

-   test: explicit import vitest utilities

-   test: remove [@&#8203;jest/globals](https://togithub.com/jest/globals) from dependencies

-   fix(resolve-extends): `resolveFrom` output should be platform aware

-   test: restore NO_COLOR to test script

-   chore: fix linting issues

-   fix: should use fileURLToPath instead of pathname for Windows compatibility

-   Apply suggestions from code review

-   fix: should reuse `cli` instead call `yargs()`

-   feat(cli): set terminalWidth as wrap to avoid work break on help

-   Update .eslintrc.cjs

-   feat: migrate [@&#8203;commitlint/config-conventional](https://togithub.com/commitlint/config-conventional) to pure ESM

#### [18.6.1](https://togithub.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13)

**Note:** Version bump only for package commitlint

</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 these updates again.

---

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

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMTIuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIxMi4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-29 03:44:13 +00:00
LongYinan
29fc4d141f chore: bump up azure/setup-helm action to v4 (#5950)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [azure/setup-helm](https://togithub.com/azure/setup-helm) | action | major | `v3` -> `v4` |

---

### Release Notes

<details>
<summary>azure/setup-helm (azure/setup-helm)</summary>

### [`v4`](https://togithub.com/Azure/setup-helm/releases/tag/v4)

[Compare Source](https://togithub.com/azure/setup-helm/compare/v3...v4)

Latest v4 release

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMTIuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIxMi4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-29 03:34:02 +00:00
DarkSky
3432f355b0 feat: backend module awareness & optional request (#5909) 2024-02-28 08:29:37 +00:00
Peng Xiao
35454c3bfc fix(core): polyfill resize-observer for development to avoid error overlay (#5943)
Brought a temporary solution from https://github.com/petyosi/react-virtuoso/issues/875#issuecomment-1962897033
2024-02-28 08:18:33 +00:00
DarkSky
82f21ac60b feat: udpate security policy docs (#5927) 2024-02-28 08:07:49 +00:00
wumo
d7ff7a3d95 docs: update contributed tutorial documentation (#5939) 2024-02-28 06:31:28 +00:00
liuyi
a38f7ee252 fix(server): sender passed to nextauth is never used (#5938) 2024-02-28 05:44:25 +00:00
Peng Xiao
27f2209e87 fix(core): date formatter timezone issue (#5936)
date seems not hornoring the locale browser's locale when parsing date string like "2024-02-28".
fixed by using dayjs instead.

Fix incorrect journal title issue
2024-02-28 04:27:32 +00:00
LongYinan
9e09166452 build: fix selfhost config (#5930) 2024-02-28 04:17:29 +00:00
Peng Xiao
a0364dd4ea fix(core): minor page info style issues (#5935) 2024-02-28 03:45:51 +00:00
Peng Xiao
148807879b refactor(component): use react-transition-state to simplify exit animation (#5923)
## **User description**
use react-transition-state to simplify exit animation

___

## **Type**
enhancement

___

## **Description**
- Integrated `react-transition-state` for managing animations in `ResizePanel` and `CMDKModal` components, simplifying the code and improving maintainability.
- Introduced a shared animation timeout variable to standardize animation durations across components.
- Added `react-transition-state` to dependencies to enable the new animation handling.

___

## **Changes walkthrough**
<table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
  <td>
    <details>
      <summary><strong>resize-panel.tsx</strong><dd><code>Integrate `react-transition-state` for Resize Panel Animations</code></dd></summary>
<hr>

packages/frontend/component/src/components/resize-panel/resize-panel.tsx

<li>Introduced <code>useTransition</code> hook from <code>react-transition-state</code> for managing <br>animations.<br> <li> Added a constant for animation timeout and applied it to the <br>transition.<br> <li> Utilized the transition state to toggle the open state of the resize <br>panel.<br>

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5923/files#diff-a4d6e633862f63f97c167ff41ba62aff8aebf3e3b2f6e7ce13d5a0e22e8ff287">+12/-0</a>&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
      <summary><strong>modal.css.ts</strong><dd><code>Use Variable for Animation Timeout in Modal CSS</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

packages/frontend/core/src/components/pure/cmdk/modal.css.ts

<li>Created a variable for animation timeout.<br> <li> Updated animation durations to use the new timeout variable.<br>

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5923/files#diff-ba8935611b9c1695153d92d08ecb0f7dac73a6197f54ccda5a6e791902cd651d">+6/-3</a>&nbsp; &nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
      <summary><strong>modal.tsx</strong><dd><code>Simplify CMDK Modal Animation with `react-transition-state`</code></dd></summary>
<hr>

packages/frontend/core/src/components/pure/cmdk/modal.tsx

<li>Replaced custom animation state management with <code>useTransition</code> hook.<br> <li> Removed old animation state logic and simplified the component.<br> <li> Added animation timeout variable and applied it to the transition.<br>

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5923/files#diff-ab3fe66c9b1d3a691fafd1aebc9988e840fedfcd09b5b89570838a5a2a9469c9">+13/-33</a>&nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
  <td>
    <details>
      <summary><strong>package.json</strong><dd><code>Add `react-transition-state` Dependency</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

packages/frontend/core/package.json

- Added `react-transition-state` as a dependency.

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5923/files#diff-23e0e5dc0ceb004a0a5d3d13e7d00545de7487535ca0e5eab4c5047f1e24eff0">+1/-0</a>&nbsp; &nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

___

>  **PR-Agent usage**:
>Comment `/help` on the PR to get a list of all available PR-Agent tools and their descriptions
2024-02-27 14:55:33 +00:00
LongYinan
c724b3fece build(electron): fix dmg maker (#5922)
## **Type**
enhancement

___

## **Description**
- Introduced a custom DMG packaging solution `@affine/appdmg-patch` for Electron applications.
- Implemented a new TypeScript class `MakerDmg` to handle the custom packaging logic, including support for custom backgrounds, icons, and app positioning within the DMG.
- Updated Electron Forge configuration to use the new `@affine/appdmg-patch` package instead of `@electron-forge/maker-dmg`.
- Adjusted package dependencies in `packages/frontend/electron/package.json`, adding `@affine/appdmg-patch` and removing `@electron-forge/maker-dmg`.

___

## **Changes walkthrough**
<table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement
</strong></td><td><table>
<tr>
  <td>
    <details>
      <summary><strong>index.ts</strong><dd><code>Implement Custom DMG Packaging Logic</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

tools/appdmg-patch/index.ts

<li>Introduced a new class <code>MakerDmg</code> extending <code>MakerBase</code> with support for <br>custom DMG packaging.<br> <li> Implemented custom DMG packaging logic including background, icon, and <br>app positioning.<br> <li> Added support for custom <code>contents</code> configuration to define the DMG <br>layout.<br>

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5922/files#diff-96a537c04a2a740dca542688b3e6a65c67e6cf339b146bf0a9c49008ad58ea77">+80/-0</a>&nbsp; &nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Configuration changes
</strong></td><td><table>
<tr>
  <td>
    <details>
      <summary><strong>forge.config.mjs</strong><dd><code>Update Electron Forge Configuration for Custom DMG Packaging</code></dd></summary>
<hr>

packages/frontend/electron/forge.config.mjs

<li>Replaced <code>@electron-forge/maker-dmg</code> with <code>@affine/appdmg-patch</code> in the <br>makers configuration.<br> <li> Adjusted DMG icon size and background configuration.<br>

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5922/files#diff-bd3343a702deabb8f5f6f77e34fbc215615538875f59b68d82612c0f5ed532a3">+2/-3</a>&nbsp; &nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
      <summary><strong>package.json</strong><dd><code>Introduce Package Configuration for Custom DMG Packaging</code>&nbsp; </dd></summary>
<hr>

tools/appdmg-patch/package.json

<li>Created a new package <code>@affine/appdmg-patch</code> with necessary dependencies <br>for custom DMG packaging.<br>

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5922/files#diff-395b189951512e67d55b0abc55a167f014f239f608ec5b180f9c7d48e1ea9e8b">+16/-0</a>&nbsp; &nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Dependencies
</strong></td><td><table>
<tr>
  <td>
    <details>
      <summary><strong>package.json</strong><dd><code>Update Package Dependencies for Electron Frontend</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

packages/frontend/electron/package.json

<li>Added <code>@affine/appdmg-patch</code> to <code>devDependencies</code>.<br> <li> Removed <code>@electron-forge/maker-dmg</code> from <code>devDependencies</code>.<br>

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5922/files#diff-37323e9da5e4b1606abb6eb8e5ff1516ae5fce925bceaafeeade61bd80c0b62d">+1/-1</a>&nbsp; &nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

___

>  **PR-Agent usage**:
>Comment `/help` on the PR to get a list of all available PR-Agent tools and their descriptions
2024-02-27 14:41:39 +00:00
LongYinan
571b20d082 chore: bump up @commitlint/cli version to v19 (#5926)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@commitlint/cli](https://commitlint.js.org/) ([source](https://togithub.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli)) | [`^18.6.1` -> `^19.0.0`](https://renovatebot.com/diffs/npm/@commitlint%2fcli/18.6.1/19.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@commitlint%2fcli/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@commitlint%2fcli/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@commitlint%2fcli/18.6.1/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@commitlint%2fcli/18.6.1/19.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>conventional-changelog/commitlint (@&#8203;commitlint/cli)</summary>

### [`v19.0.0`](https://togithub.com/conventional-changelog/commitlint/blob/HEAD/@&#8203;commitlint/cli/CHANGELOG.md#1900-2024-02-27)

[Compare Source](https://togithub.com/conventional-changelog/commitlint/compare/v18.6.1...f1ff12159d627ee63bf8982ab02e6cca8f10b09f)

-   feat!: migrate to pure ESM ([#&#8203;3850](https://togithub.com/conventional-changelog/commitlint/issues/3850)) ([3423735](342373559b)), closes [#&#8203;3850](https://togithub.com/conventional-changelog/commitlint/issues/3850)

##### Reverts

-   Revert "chore!: minimum node version v20" ([2816783](2816783d00))

##### BREAKING CHANGES

-   migrate to pure ESM

-   feat: migrate to pure ESM

-   chore: update snapshot

-   fix: load `parserPreset` with another `await`

-   test: migrate to vitest

-   test: remove no replacement `--runInBand` test-ci script

-   chore: fix code reviews

-   refactor(load): rewrite resolve logic

-   fix(config-nx-scopes): fix syntax error

-   feat(resolve-extends): add resolveFrom and loadParserPreset

-   feat(load): use resolveFrom and loadParserPreset from resolve-extends

-   test: include only @&#8203;commitlint/\* packages src in coverage

-   test: explicit import vitest utilities

-   test: remove [@&#8203;jest/globals](https://togithub.com/jest/globals) from dependencies

-   fix(resolve-extends): `resolveFrom` output should be platform aware

-   test: restore NO_COLOR to test script

-   chore: fix linting issues

-   fix: should use fileURLToPath instead of pathname for Windows compatibility

-   Apply suggestions from code review

-   fix: should reuse `cli` instead call `yargs()`

-   feat(cli): set terminalWidth as wrap to avoid work break on help

-   Update .eslintrc.cjs

-   feat: migrate [@&#8203;commitlint/config-conventional](https://togithub.com/commitlint/config-conventional) to pure ESM

#### [18.6.1](https://togithub.com/conventional-changelog/commitlint/compare/v18.6.0...v18.6.1) (2024-02-13)

**Note:** Version bump only for package [@&#8203;commitlint/cli](https://togithub.com/commitlint/cli)

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMTIuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIxMi4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-27 13:09:18 +00:00
liuyi
540d079308 ci: fix selfhost (#5920)
## **Type**
enhancement

___

## **Description**
- Introduced a new ESM module resolution setup using `ts-node` to enhance the development and deployment process.
- Implemented a dynamic loader script registration mechanism to facilitate ESM module loading.
- Simplified the predeploy script execution by refining environment variable handling and stdout configuration.
- Updated `package.json` to reflect changes in script commands for better ESM support and added necessary dependencies for `ts-node` and `typescript`.

___

## **Changes walkthrough**
<table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
  <td>
    <details>
      <summary><strong>loader.js</strong><dd><code>Introduce ESM Module Resolution via ts-node</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

packages/backend/server/scripts/loader.js

<li>Introduced <code>ts-node</code> configuration for ESM module resolution.<br> <li> Exported a <code>resolve</code> function for module resolution.<br>

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5920/files#diff-9ed793897a493633028d510db0742ff38d2d86471c54b17513d4354c51597ef8">+11/-0</a>&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
      <summary><strong>register.js</strong><dd><code>Implement Dynamic Loader Script Registration</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

packages/backend/server/scripts/register.js

<li>Implemented dynamic registration of the loader script.<br> <li> Utilized <code>node:module</code> and <code>node:url</code> for script registration.<br>

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5920/files#diff-64831012a09f2bc4bc5a611ddb8e0871b0e83588de6c5d4f2f5cb1dae8fff244">+4/-0</a>&nbsp; &nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
      <summary><strong>self-host-predeploy.js</strong><dd><code>Simplify Predeploy Script Execution</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

packages/backend/server/scripts/self-host-predeploy.js

<li>Simplified environment variable passing to <code>execSync</code>.<br> <li> Changed stdout handling to inherit from the parent process.<br>

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5920/files#diff-bd7b0be14c198018c21dadda6945a779c57d13e4c8584ee62da4baa99d370664">+3/-5</a>&nbsp; &nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
      <summary><strong>package.json</strong><dd><code>Update Scripts and Dependencies for ESM Support</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

packages/backend/server/package.json

<li>Updated script commands for ESM compatibility.<br> <li> Added <code>ts-node</code> and <code>typescript</code> dependencies.<br> <li> Removed redundant <code>--es-module-specifier-resolution=node</code> flags.<br>

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5920/files#diff-a6530c6fe539aaa49ff0a7a80bc4362c1d95c419fdd19125415dcc869b31a443">+6/-6</a>&nbsp; &nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

___

>  **PR-Agent usage**:
>Comment `/help` on the PR to get a list of all available PR-Agent tools and their descriptions
2024-02-27 07:22:21 +00:00
Peng Xiao
39d177c507 build: codesigning dmg (#5921)
fix https://github.com/toeverything/AFFiNE/issues/5898
2024-02-27 06:35:46 +00:00
EYHN
606397e319 feat(core): workbench system (#5837) 2024-02-27 04:14:07 +00:00
EYHN
5cd488fe1d refactor(core): remove collection atom (#5832) 2024-02-27 03:50:56 +00:00
EYHN
ad9b0303c4 refactor(core): refactor atom to use di (#5831)
To support multiple instances, this PR removes some atoms and implements them using the new DI system.

removed atom

- `pageSettingsAtom`
- `currentPageIdAtom`
- `currentModeAtom`
2024-02-27 03:50:53 +00:00
EYHN
0dabb08217 chore: create default user for devcontainer (#5917)
## **Type**
enhancement

___

## **Description**
- Added a command to `.devcontainer/build.sh` to create a default user (`affine`) in the database for development purposes.
- Introduced error handling in `.devcontainer/setup-user.sh` to ensure the script stops on the first error.
- Modified the git fetch command in `.devcontainer/setup-user.sh` to fetch the `canary` branch from `origin` with a depth of 1, optimizing the setup process.

___

## **Changes walkthrough**
<table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement
</strong></td><td><table>
<tr>
  <td>
    <details>
      <summary><strong>build.sh</strong><dd><code>Add Default User Creation to Dev Container Build Script</code>&nbsp; &nbsp; </dd></summary>
<hr>

.devcontainer/build.sh

<li>Added command to create a default user with username and password <br>'affine'.<br> <li> Ensured database push command is followed by a newline.<br>

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5917/files#diff-165b66803397b501866b23a0532418e9ad3eb2ab642274f9679383c76d18136f">+4/-1</a>&nbsp; &nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
      <summary><strong>setup-user.sh</strong><dd><code>Enhance User Setup Script with Error Handling and Specific Git Fetch</code></dd></summary>
<hr>

.devcontainer/setup-user.sh

<li>Introduced error handling with 'set -e' to stop on first error.<br> <li> Modified 'git fetch' to specifically fetch 'canary' branch from <br>'origin' with depth of 1.<br>

</details>

  </td>
  <td><a href="https:/toeverything/AFFiNE/pull/5917/files#diff-8c5e76719e2ff0a3bf2b59d108dc9cf88bdae00c317728454cfa5108f2fc76af">+3/-1</a>&nbsp; &nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

___

>  **PR-Agent usage**:
>Comment `/help` on the PR to get a list of all available PR-Agent tools and their descriptions
2024-02-27 03:32:03 +00:00
Peng Xiao
2295685590 fix: page info styles (#5910)
fix inconsistent styles compared to the one defined in figma
fix https://github.com/toeverything/AFFiNE/issues/5904
fix https://github.com/toeverything/AFFiNE/issues/5903
2024-02-26 14:11:24 +00:00
EYHN
6ccc4f1501 chore: start dev server on devcontainer (#5914) 2024-02-26 13:47:06 +00:00
EYHN
ee4918b3b8 chore: update devcontainer build.sh (#5912) 2024-02-26 13:47:00 +00:00
Hwang
8e5ab2bfbf docs(docs): update readmd.md (#5911)
Co-authored-by: EYHN <cneyhn@gmail.com>
2024-02-26 10:57:11 +00:00
HeJiachen-PM
d602cbb53c ci: update compose.yaml (#5905) 2024-02-26 18:47:37 +08:00
Peng Xiao
298afc7d74 feat(core): enable right sidepanel animation (#5902) 2024-02-26 09:04:04 +00:00
JimmFly
0be62d892d refactor(core): use custom scrollbar for editor and adjust shared page style (#5752)
Close TOV-481
- Use a custom scrollbar component for editor
- Modified the header of the share page and added a new footer
2024-02-26 08:54:52 +00:00
JimmFly
e9f9eea80c fix(core): handling error message when sending verify change email (#5894) 2024-02-26 08:32:48 +00:00
JimmFly
d3360f655e chore: update i18n resources (#5906) 2024-02-26 07:53:45 +00:00
Peng Xiao
cc2d97e3b8 fix: right sidepanel open on focus (#5901)
fix TOV-614
Should not show sidepanel on focusing inner elemenets
2024-02-26 03:43:37 +00:00
Peng Xiao
7d73145a69 fix: page info -> info (#5892)
fix AFF-607
2024-02-23 14:14:43 +00:00
Peng Xiao
c16e4d4464 fix: page properties flaky tests (#5893) 2024-02-23 14:14:41 +00:00
Peng Xiao
9e7406e0a1 chore: downgrade react-virtuoso to 4.6.3 (#5896)
temp workaround for https://github.com/petyosi/react-virtuoso/issues/1039

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/79901ff6-fe30-4794-ab93-c81f217022d0.png)
2024-02-23 13:55:11 +00:00
LongYinan
ae41c6c544 chore: bump all dependencies (#5891) 2024-02-23 09:37:14 +00:00
Peng Xiao
db1d0dcf52 fix(electron): autohide menu bar on linux (#5890) 2024-02-23 09:27:29 +00:00
LongYinan
ccd3190cec ci: run CI on beta/stable push (#5889) 2024-02-23 09:17:13 +00:00
LongYinan
062526d452 chore: bump up node version to v20 (#5201)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [node](https://nodejs.org) ([source](https://togithub.com/nodejs/node)) |  | major | `18` -> `20` |
| [node](https://nodejs.org) ([source](https://togithub.com/nodejs/node)) | engines | major | [`>=18.16.1 <19.0.0` -> `<21.0.0`](https://renovatebot.com/diffs/npm/node/v18.19.1/v20.11.1) |
| [node](https://togithub.com/nodejs/node) | final | major | `18-bookworm-slim` -> `20-bookworm-slim` |

---

### Release Notes

<details>
<summary>nodejs/node (node)</summary>

### [`v20.11.1`](https://togithub.com/nodejs/node/compare/v20.11.0...v20.11.1)

[Compare Source](https://togithub.com/nodejs/node/compare/v20.11.0...v20.11.1)

### [`v20.11.0`](https://togithub.com/nodejs/node/compare/v20.10.0...v20.11.0)

[Compare Source](https://togithub.com/nodejs/node/compare/v20.10.0...v20.11.0)

### [`v20.10.0`](https://togithub.com/nodejs/node/compare/v20.9.0...v20.10.0)

[Compare Source](https://togithub.com/nodejs/node/compare/v20.9.0...v20.10.0)

### [`v20.9.0`](https://togithub.com/nodejs/node/compare/v20.8.1...v20.9.0)

[Compare Source](https://togithub.com/nodejs/node/compare/v20.8.1...v20.9.0)

### [`v20.8.1`](https://togithub.com/nodejs/node/releases/tag/v20.8.1): 2023-10-13, Version 20.8.1 (Current), @&#8203;RafaelGSS

[Compare Source](https://togithub.com/nodejs/node/compare/v20.8.0...v20.8.1)

This is a security release.

##### Notable Changes

The following CVEs are fixed in this release:

-   [CVE-2023-44487](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-44487): `nghttp2` Security Release (High)
-   [CVE-2023-45143](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-45143): `undici` Security Release (High)
-   [CVE-2023-39332](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-39332): Path traversal through path stored in Uint8Array (High)
-   [CVE-2023-39331](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-39331): Permission model improperly protects against path traversal (High)
-   [CVE-2023-38552](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-38552):  Integrity checks according to policies can be circumvented (Medium)
-   [CVE-2023-39333](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-39333): Code injection via WebAssembly export names (Low)

More detailed information on each of the vulnerabilities can be found in [October 2023 Security Releases](https://nodejs.org/en/blog/vulnerability/october-2023-security-releases/) blog post.

##### Commits

-   \[[`c86883e844`](https://togithub.com/nodejs/node/commit/c86883e844)] - **deps**: update nghttp2 to 1.57.0 (James M Snell) [#&#8203;50121](https://togithub.com/nodejs/node/pull/50121)
-   \[[`2860631359`](https://togithub.com/nodejs/node/commit/2860631359)] - **deps**: update undici to v5.26.3 (Matteo Collina) [#&#8203;50153](https://togithub.com/nodejs/node/pull/50153)
-   \[[`cd37838bf8`](https://togithub.com/nodejs/node/commit/cd37838bf8)] - **lib**: let deps require `node` prefixed modules (Matthew Aitken) [#&#8203;50047](https://togithub.com/nodejs/node/pull/50047)
-   \[[`f5c90b2951`](https://togithub.com/nodejs/node/commit/f5c90b2951)] - **module**: fix code injection through export names (Tobias Nießen) [nodejs-private/node-private#461](https://togithub.com/nodejs-private/node-private/pull/461)
-   \[[`fa5dae1944`](https://togithub.com/nodejs/node/commit/fa5dae1944)] - **permission**: fix Uint8Array path traversal (Tobias Nießen) [nodejs-private/node-private#456](https://togithub.com/nodejs-private/node-private/pull/456)
-   \[[`cd35275111`](https://togithub.com/nodejs/node/commit/cd35275111)] - **permission**: improve path traversal protection (Tobias Nießen) [nodejs-private/node-private#456](https://togithub.com/nodejs-private/node-private/pull/456)
-   \[[`a4cb7fc7c0`](https://togithub.com/nodejs/node/commit/a4cb7fc7c0)] - **policy**: use tamper-proof integrity check function (Tobias Nießen) [nodejs-private/node-private#462](https://togithub.com/nodejs-private/node-private/pull/462)

### [`v20.8.0`](https://togithub.com/nodejs/node/releases/tag/v20.8.0): 2023-09-28, Version 20.8.0 (Current), @&#8203;ruyadorno

[Compare Source](https://togithub.com/nodejs/node/compare/v20.7.0...v20.8.0)

##### Notable Changes

##### Stream performance improvements

Performance improvements to writable and readable streams, improving the creation and destruction by ±15% and reducing the memory overhead each stream takes in Node.js

Contributed by Benjamin Gruenbaum in [#&#8203;49745](https://togithub.com/nodejs/node/pull/49745) and Raz Luvaton in [#&#8203;49834](https://togithub.com/nodejs/node/pull/49834).

Performance improvements for readable webstream, improving readable stream async iterator consumption by ±140% and improving readable stream `pipeTo` consumption by ±60%

Contributed by Raz Luvaton in [#&#8203;49662](https://togithub.com/nodejs/node/pull/49662) and [#&#8203;49690](https://togithub.com/nodejs/node/pull/49690).

##### Rework of memory management in `vm` APIs with the `importModuleDynamically` option

This rework addressed a series of long-standing memory leaks and use-after-free issues in the following APIs that support `importModuleDynamically`:

-   `vm.Script`
-   `vm.compileFunction`
-   `vm.SyntheticModule`
-   `vm.SourceTextModule`

This should enable affected users (in particular Jest users) to upgrade from older versions of Node.js.

Contributed by Joyee Cheung in [#&#8203;48510](https://togithub.com/nodejs/node/pull/48510).

##### Other notable changes

-   \[[`32d4d29d02`](https://togithub.com/nodejs/node/commit/32d4d29d02)] - **deps**: add v8::Object::SetInternalFieldForNodeCore() (Joyee Cheung) [#&#8203;49874](https://togithub.com/nodejs/node/pull/49874)
-   \[[`0e686d096b`](https://togithub.com/nodejs/node/commit/0e686d096b)] - **doc**: deprecate `fs.F_OK`, `fs.R_OK`, `fs.W_OK`, `fs.X_OK` (Livia Medeiros) [#&#8203;49683](https://togithub.com/nodejs/node/pull/49683)
-   \[[`a5dd057540`](https://togithub.com/nodejs/node/commit/a5dd057540)] - **doc**: deprecate `util.toUSVString` (Yagiz Nizipli) [#&#8203;49725](https://togithub.com/nodejs/node/pull/49725)
-   \[[`7b6a73172f`](https://togithub.com/nodejs/node/commit/7b6a73172f)] - **doc**: deprecate calling `promisify` on a function that returns a promise (Antoine du Hamel) [#&#8203;49647](https://togithub.com/nodejs/node/pull/49647)
-   \[[`1beefd5f16`](https://togithub.com/nodejs/node/commit/1beefd5f16)] - **esm**: set all hooks as release candidate (Geoffrey Booth) [#&#8203;49597](https://togithub.com/nodejs/node/pull/49597)
-   \[[`b0ce78a75b`](https://togithub.com/nodejs/node/commit/b0ce78a75b)] - **module**: fix the leak in SourceTextModule and ContextifySript (Joyee Cheung) [#&#8203;48510](https://togithub.com/nodejs/node/pull/48510)
-   \[[`4e578f8ab1`](https://togithub.com/nodejs/node/commit/4e578f8ab1)] - **module**: fix leak of vm.SyntheticModule (Joyee Cheung) [#&#8203;48510](https://togithub.com/nodejs/node/pull/48510)
-   \[[`69e4218772`](https://togithub.com/nodejs/node/commit/69e4218772)] - **module**: use symbol in WeakMap to manage host defined options (Joyee Cheung) [#&#8203;48510](https://togithub.com/nodejs/node/pull/48510)
-   \[[`14ece0aa76`](https://togithub.com/nodejs/node/commit/14ece0aa76)] - **(SEMVER-MINOR)** **src**: allow embedders to override NODE_MODULE_VERSION (Cheng Zhao) [#&#8203;49279](https://togithub.com/nodejs/node/pull/49279)
-   \[[`9fd67fbff0`](https://togithub.com/nodejs/node/commit/9fd67fbff0)] - **stream**: use bitmap in writable state (Raz Luvaton) [#&#8203;49834](https://togithub.com/nodejs/node/pull/49834)
-   \[[`0ccd4638ac`](https://togithub.com/nodejs/node/commit/0ccd4638ac)] - **stream**: use bitmap in readable state (Benjamin Gruenbaum) [#&#8203;49745](https://togithub.com/nodejs/node/pull/49745)
-   \[[`7c5e322346`](https://togithub.com/nodejs/node/commit/7c5e322346)] - **stream**: improve webstream readable async iterator performance (Raz Luvaton) [#&#8203;49662](https://togithub.com/nodejs/node/pull/49662)
-   \[[`80b342cc38`](https://togithub.com/nodejs/node/commit/80b342cc38)] - **(SEMVER-MINOR)** **test_runner**: accept `testOnly` in `run` (Moshe Atlow) [#&#8203;49753](https://togithub.com/nodejs/node/pull/49753)
-   \[[`17a05b141d`](https://togithub.com/nodejs/node/commit/17a05b141d)] - **(SEMVER-MINOR)** **test_runner**: add junit reporter (Moshe Atlow) [#&#8203;49614](https://togithub.com/nodejs/node/pull/49614)

##### Commits

-   \[[`4879e3fbbe`](https://togithub.com/nodejs/node/commit/4879e3fbbe)] - **benchmark**: add a benchmark for read() of ReadableStreams (Debadree Chatterjee) [#&#8203;49622](https://togithub.com/nodejs/node/pull/49622)
-   \[[`78a6c73157`](https://togithub.com/nodejs/node/commit/78a6c73157)] - **benchmark**: shorten pipe-to by reducing number of chunks (Raz Luvaton) [#&#8203;49577](https://togithub.com/nodejs/node/pull/49577)
-   \[[`4126a6e4c9`](https://togithub.com/nodejs/node/commit/4126a6e4c9)] - **benchmark**: fix webstream pipe-to (Raz Luvaton) [#&#8203;49552](https://togithub.com/nodejs/node/pull/49552)
-   \[[`6010a91825`](https://togithub.com/nodejs/node/commit/6010a91825)] - **bootstrap**: do not expand argv1 for snapshots (Joyee Cheung) [#&#8203;49506](https://togithub.com/nodejs/node/pull/49506)
-   \[[`8480280c4b`](https://togithub.com/nodejs/node/commit/8480280c4b)] - **bootstrap**: only use the isolate snapshot when compiling code cache (Joyee Cheung) [#&#8203;49288](https://togithub.com/nodejs/node/pull/49288)
-   \[[`b30754aa87`](https://togithub.com/nodejs/node/commit/b30754aa87)] - **build**: run embedtest using node executable (Joyee Cheung) [#&#8203;49506](https://togithub.com/nodejs/node/pull/49506)
-   \[[`31db0b8e2b`](https://togithub.com/nodejs/node/commit/31db0b8e2b)] - **build**: add --write-snapshot-as-array-literals to configure.py (Joyee Cheung) [#&#8203;49312](https://togithub.com/nodejs/node/pull/49312)
-   \[[`6fcb51d3ba`](https://togithub.com/nodejs/node/commit/6fcb51d3ba)] - **debugger**: use `internal/url.URL` instead of `url.parse` (LiviaMedeiros) [#&#8203;49590](https://togithub.com/nodejs/node/pull/49590)
-   \[[`32d4d29d02`](https://togithub.com/nodejs/node/commit/32d4d29d02)] - **deps**: add v8::Object::SetInternalFieldForNodeCore() (Joyee Cheung) [#&#8203;49874](https://togithub.com/nodejs/node/pull/49874)
-   \[[`ad37cadc3f`](https://togithub.com/nodejs/node/commit/ad37cadc3f)] - **deps**: V8: backport [`de9a5de`](https://togithub.com/nodejs/node/commit/de9a5de2274f) (Joyee Cheung) [#&#8203;49703](https://togithub.com/nodejs/node/pull/49703)
-   \[[`cdd1c66222`](https://togithub.com/nodejs/node/commit/cdd1c66222)] - **deps**: V8: cherry-pick [`b33bf2d`](https://togithub.com/nodejs/node/commit/b33bf2dfd261) (Joyee Cheung) [#&#8203;49703](https://togithub.com/nodejs/node/pull/49703)
-   \[[`61d18d6473`](https://togithub.com/nodejs/node/commit/61d18d6473)] - **deps**: update undici to 5.24.0 (Node.js GitHub Bot) [#&#8203;49559](https://togithub.com/nodejs/node/pull/49559)
-   \[[`b8a4fef393`](https://togithub.com/nodejs/node/commit/b8a4fef393)] - **deps**: remove pthread-fixes.c from uv.gyp (Ben Noordhuis) [#&#8203;49744](https://togithub.com/nodejs/node/pull/49744)
-   \[[`6c86c0683c`](https://togithub.com/nodejs/node/commit/6c86c0683c)] - **deps**: update googletest to [`d1467f5`](https://togithub.com/nodejs/node/commit/d1467f5) (Node.js GitHub Bot) [#&#8203;49676](https://togithub.com/nodejs/node/pull/49676)
-   \[[`1424404742`](https://togithub.com/nodejs/node/commit/1424404742)] - **deps**: update nghttp2 to 1.56.0 (Node.js GitHub Bot) [#&#8203;49582](https://togithub.com/nodejs/node/pull/49582)
-   \[[`15b54ff95d`](https://togithub.com/nodejs/node/commit/15b54ff95d)] - **deps**: update googletest to [`8a6feab`](https://togithub.com/nodejs/node/commit/8a6feab) (Node.js GitHub Bot) [#&#8203;49463](https://togithub.com/nodejs/node/pull/49463)
-   \[[`2ceab877c2`](https://togithub.com/nodejs/node/commit/2ceab877c2)] - **deps**: update corepack to 0.20.0 (Node.js GitHub Bot) [#&#8203;49464](https://togithub.com/nodejs/node/pull/49464)
-   \[[`4814872ddc`](https://togithub.com/nodejs/node/commit/4814872ddc)] - **doc**: fix `DEP0176` number (LiviaMedeiros) [#&#8203;49858](https://togithub.com/nodejs/node/pull/49858)
-   \[[`0e686d096b`](https://togithub.com/nodejs/node/commit/0e686d096b)] - **doc**: deprecate `fs.F_OK`, `fs.R_OK`, `fs.W_OK`, `fs.X_OK` (Livia Medeiros) [#&#8203;49683](https://togithub.com/nodejs/node/pull/49683)
-   \[[`5877c403a2`](https://togithub.com/nodejs/node/commit/5877c403a2)] - **doc**: add mertcanaltin as a triager (mert.altin) [#&#8203;49826](https://togithub.com/nodejs/node/pull/49826)
-   \[[`864fe56432`](https://togithub.com/nodejs/node/commit/864fe56432)] - **doc**: add `git node backport` way to the backporting guide (Raz Luvaton) [#&#8203;49760](https://togithub.com/nodejs/node/pull/49760)
-   \[[`e0f93492d5`](https://togithub.com/nodejs/node/commit/e0f93492d5)] - **doc**: improve documentation about ICU data fallback (Joyee Cheung) [#&#8203;49666](https://togithub.com/nodejs/node/pull/49666)
-   \[[`a5dd057540`](https://togithub.com/nodejs/node/commit/a5dd057540)] - **doc**: deprecate `util.toUSVString` (Yagiz Nizipli) [#&#8203;49725](https://togithub.com/nodejs/node/pull/49725)
-   \[[`774c1cfd52`](https://togithub.com/nodejs/node/commit/774c1cfd52)] - **doc**: add missing function call to example for `util.promisify` (Jungku Lee) [#&#8203;49719](https://togithub.com/nodejs/node/pull/49719)
-   \[[`fe78a34845`](https://togithub.com/nodejs/node/commit/fe78a34845)] - **doc**: update output of example in `mimeParams.set()` (Deokjin Kim) [#&#8203;49718](https://togithub.com/nodejs/node/pull/49718)
-   \[[`4175ea33bd`](https://togithub.com/nodejs/node/commit/4175ea33bd)] - **doc**: add missed `inspect` with numericSeparator to example (Deokjin Kim) [#&#8203;49717](https://togithub.com/nodejs/node/pull/49717)
-   \[[`3a88571972`](https://togithub.com/nodejs/node/commit/3a88571972)] - **doc**: fix history comments (Antoine du Hamel) [#&#8203;49701](https://togithub.com/nodejs/node/pull/49701)
-   \[[`db4ab1ccbb`](https://togithub.com/nodejs/node/commit/db4ab1ccbb)] - **doc**: add missing history info for `import.meta.resolve` (Antoine du Hamel) [#&#8203;49700](https://togithub.com/nodejs/node/pull/49700)
-   \[[`a304d1ee19`](https://togithub.com/nodejs/node/commit/a304d1ee19)] - **doc**: link maintaining deps to pull-request.md (Marco Ippolito) [#&#8203;49716](https://togithub.com/nodejs/node/pull/49716)
-   \[[`35294486ad`](https://togithub.com/nodejs/node/commit/35294486ad)] - **doc**: fix print results in `events` (Jungku Lee) [#&#8203;49548](https://togithub.com/nodejs/node/pull/49548)
-   \[[`9f0b0e15c9`](https://togithub.com/nodejs/node/commit/9f0b0e15c9)] - **doc**: alphabetize cli.md sections (Geoffrey Booth) [#&#8203;49668](https://togithub.com/nodejs/node/pull/49668)
-   \[[`7b6a73172f`](https://togithub.com/nodejs/node/commit/7b6a73172f)] - **doc**: deprecate calling `promisify` on a function that returns a promise (Antoine du Hamel) [#&#8203;49647](https://togithub.com/nodejs/node/pull/49647)
-   \[[`d316b32fff`](https://togithub.com/nodejs/node/commit/d316b32fff)] - **doc**: update `corepack.md` to account for 0.20.0 changes (Antoine du Hamel) [#&#8203;49486](https://togithub.com/nodejs/node/pull/49486)
-   \[[`c2eac7dc7c`](https://togithub.com/nodejs/node/commit/c2eac7dc7c)] - **doc**: remove `@anonrig` from performance initiative (Yagiz Nizipli) [#&#8203;49641](https://togithub.com/nodejs/node/pull/49641)
-   \[[`3d839fbf87`](https://togithub.com/nodejs/node/commit/3d839fbf87)] - **doc**: mark Node.js 16 as End-of-Life (Richard Lau) [#&#8203;49651](https://togithub.com/nodejs/node/pull/49651)
-   \[[`53fb5aead8`](https://togithub.com/nodejs/node/commit/53fb5aead8)] - **doc**: save user preference for JS flavor (Vidar Eldøy) [#&#8203;49526](https://togithub.com/nodejs/node/pull/49526)
-   \[[`e3594d5658`](https://togithub.com/nodejs/node/commit/e3594d5658)] - **doc**: update documentation for node:process warning (Shubham Pandey) [#&#8203;49517](https://togithub.com/nodejs/node/pull/49517)
-   \[[`8e033c3963`](https://togithub.com/nodejs/node/commit/8e033c3963)] - **doc**: rename possibly confusing variable and CSS class (Antoine du Hamel) [#&#8203;49536](https://togithub.com/nodejs/node/pull/49536)
-   \[[`d0e0eb4bb3`](https://togithub.com/nodejs/node/commit/d0e0eb4bb3)] - **doc**: update outdated history info (Antoine du Hamel) [#&#8203;49530](https://togithub.com/nodejs/node/pull/49530)
-   \[[`b4724e2e3a`](https://togithub.com/nodejs/node/commit/b4724e2e3a)] - **doc**: close a parenthesis (Sébastien Règne) [#&#8203;49525](https://togithub.com/nodejs/node/pull/49525)
-   \[[`0471c5798e`](https://togithub.com/nodejs/node/commit/0471c5798e)] - **doc**: cast GetInternalField() return type to v8::Value in addons.md (Joyee Cheung) [#&#8203;49439](https://togithub.com/nodejs/node/pull/49439)
-   \[[`9f8bea3dda`](https://togithub.com/nodejs/node/commit/9f8bea3dda)] - **doc**: fix documentation for input option in child_process (Ariel Weiss) [#&#8203;49481](https://togithub.com/nodejs/node/pull/49481)
-   \[[`f3fea92f8a`](https://togithub.com/nodejs/node/commit/f3fea92f8a)] - **doc**: fix missing imports in `test.run` code examples (Oshri Asulin) [#&#8203;49489](https://togithub.com/nodejs/node/pull/49489)
-   \[[`e426b77b67`](https://togithub.com/nodejs/node/commit/e426b77b67)] - **doc**: fix documentation for fs.createWriteStream highWaterMark option (Mert Can Altın) [#&#8203;49456](https://togithub.com/nodejs/node/pull/49456)
-   \[[`2b119108ff`](https://togithub.com/nodejs/node/commit/2b119108ff)] - **doc**: updated releasers instructions for node.js website (Claudio W) [#&#8203;49427](https://togithub.com/nodejs/node/pull/49427)
-   \[[`b9d4a80183`](https://togithub.com/nodejs/node/commit/b9d4a80183)] - **doc**: edit `import.meta.resolve` documentation (Antoine du Hamel) [#&#8203;49247](https://togithub.com/nodejs/node/pull/49247)
-   \[[`f67433f666`](https://togithub.com/nodejs/node/commit/f67433f666)] - **doc,tools**: switch to `@node-core/utils` (Michaël Zasso) [#&#8203;49851](https://togithub.com/nodejs/node/pull/49851)
-   \[[`142e256fc5`](https://togithub.com/nodejs/node/commit/142e256fc5)] - **errors**: improve classRegExp in errors.js (Uzlopak) [#&#8203;49643](https://togithub.com/nodejs/node/pull/49643)
-   \[[`6377f1bce2`](https://togithub.com/nodejs/node/commit/6377f1bce2)] - **errors**: use `determineSpecificType` in more error messages (Antoine du Hamel) [#&#8203;49580](https://togithub.com/nodejs/node/pull/49580)
-   \[[`05f0fcb4c4`](https://togithub.com/nodejs/node/commit/05f0fcb4c4)] - **esm**: identify parent importing a url with invalid host (Jacob Smith) [#&#8203;49736](https://togithub.com/nodejs/node/pull/49736)
-   \[[`8a6f5fb8f3`](https://togithub.com/nodejs/node/commit/8a6f5fb8f3)] - **esm**: fix return type of `import.meta.resolve` (Antoine du Hamel) [#&#8203;49698](https://togithub.com/nodejs/node/pull/49698)
-   \[[`a6140f1b8c`](https://togithub.com/nodejs/node/commit/a6140f1b8c)] - **esm**: update loaders warning (Geoffrey Booth) [#&#8203;49633](https://togithub.com/nodejs/node/pull/49633)
-   \[[`521a9327e0`](https://togithub.com/nodejs/node/commit/521a9327e0)] - **esm**: fix support for `URL` instances in `register` (Antoine du Hamel) [#&#8203;49655](https://togithub.com/nodejs/node/pull/49655)
-   \[[`3a9ea0925a`](https://togithub.com/nodejs/node/commit/3a9ea0925a)] - **esm**: clarify ERR_REQUIRE_ESM errors (Daniel Compton) [#&#8203;49521](https://togithub.com/nodejs/node/pull/49521)
-   \[[`1beefd5f16`](https://togithub.com/nodejs/node/commit/1beefd5f16)] - **esm**: set all hooks as release candidate (Geoffrey Booth) [#&#8203;49597](https://togithub.com/nodejs/node/pull/49597)
-   \[[`be48267888`](https://togithub.com/nodejs/node/commit/be48267888)] - **esm**: remove return value for `Module.register` (Antoine du Hamel) [#&#8203;49529](https://togithub.com/nodejs/node/pull/49529)
-   \[[`e74a075124`](https://togithub.com/nodejs/node/commit/e74a075124)] - **esm**: refactor test-esm-loader-resolve-type (Geoffrey Booth) [#&#8203;49493](https://togithub.com/nodejs/node/pull/49493)
-   \[[`17823b3533`](https://togithub.com/nodejs/node/commit/17823b3533)] - **esm**: refactor test-esm-named-exports (Geoffrey Booth) [#&#8203;49493](https://togithub.com/nodejs/node/pull/49493)
-   \[[`f34bd15ac1`](https://togithub.com/nodejs/node/commit/f34bd15ac1)] - **esm**: refactor mocking test (Geoffrey Booth) [#&#8203;49465](https://togithub.com/nodejs/node/pull/49465)
-   \[[`ec323bbd99`](https://togithub.com/nodejs/node/commit/ec323bbd99)] - **fs**: replace `SetMethodNoSideEffect` in node_file (CanadaHonk) [#&#8203;49857](https://togithub.com/nodejs/node/pull/49857)
-   \[[`6acf800123`](https://togithub.com/nodejs/node/commit/6acf800123)] - **fs**: improve error performance for `unlinkSync` (CanadaHonk) [#&#8203;49856](https://togithub.com/nodejs/node/pull/49856)
-   \[[`31702c9403`](https://togithub.com/nodejs/node/commit/31702c9403)] - **fs**: improve `readFileSync` with file descriptors (Yagiz Nizipli) [#&#8203;49691](https://togithub.com/nodejs/node/pull/49691)
-   \[[`835f9fe7b9`](https://togithub.com/nodejs/node/commit/835f9fe7b9)] - **fs**: fix file descriptor validator (Yagiz Nizipli) [#&#8203;49752](https://togithub.com/nodejs/node/pull/49752)
-   \[[`b618fe262f`](https://togithub.com/nodejs/node/commit/b618fe262f)] - **fs**: improve error performance of `opendirSync` (Yagiz Nizipli) [#&#8203;49705](https://togithub.com/nodejs/node/pull/49705)
-   \[[`938471ef55`](https://togithub.com/nodejs/node/commit/938471ef55)] - **fs**: improve error performance of sync methods (Yagiz Nizipli) [#&#8203;49593](https://togithub.com/nodejs/node/pull/49593)
-   \[[`db3fc6d087`](https://togithub.com/nodejs/node/commit/db3fc6d087)] - **fs**: fix readdir and opendir recursive with unknown file types (William Marlow) [#&#8203;49603](https://togithub.com/nodejs/node/pull/49603)
-   \[[`0f020ed22d`](https://togithub.com/nodejs/node/commit/0f020ed22d)] - **gyp**: put cctest filenames in variables (Cheng Zhao) [#&#8203;49178](https://togithub.com/nodejs/node/pull/49178)
-   \[[`0ce1e94d12`](https://togithub.com/nodejs/node/commit/0ce1e94d12)] - **lib**: update encoding sets in `WHATWG API` (Jungku Lee) [#&#8203;49610](https://togithub.com/nodejs/node/pull/49610)
-   \[[`efd6815a7a`](https://togithub.com/nodejs/node/commit/efd6815a7a)] - **lib**: fix `internalBinding` typings (Yagiz Nizipli) [#&#8203;49742](https://togithub.com/nodejs/node/pull/49742)
-   \[[`1287d5b74e`](https://togithub.com/nodejs/node/commit/1287d5b74e)] - **lib**: allow byob reader for 'blob.stream()' (Debadree Chatterjee) [#&#8203;49713](https://togithub.com/nodejs/node/pull/49713)
-   \[[`bbc710522d`](https://togithub.com/nodejs/node/commit/bbc710522d)] - **lib**: reset the cwd cache before execution (Maël Nison) [#&#8203;49684](https://togithub.com/nodejs/node/pull/49684)
-   \[[`f62d649e4d`](https://togithub.com/nodejs/node/commit/f62d649e4d)] - **lib**: use internal `fileURLToPath` (Deokjin Kim) [#&#8203;49558](https://togithub.com/nodejs/node/pull/49558)
-   \[[`e515046941`](https://togithub.com/nodejs/node/commit/e515046941)] - **lib**: use internal `pathToFileURL` (Livia Medeiros) [#&#8203;49553](https://togithub.com/nodejs/node/pull/49553)
-   \[[`00608e8070`](https://togithub.com/nodejs/node/commit/00608e8070)] - **lib**: check SharedArrayBuffer availability in freeze_intrinsics.js (Milan Burda) [#&#8203;49482](https://togithub.com/nodejs/node/pull/49482)
-   \[[`8bfbe7079c`](https://togithub.com/nodejs/node/commit/8bfbe7079c)] - **meta**: fix linter error (Antoine du Hamel) [#&#8203;49755](https://togithub.com/nodejs/node/pull/49755)
-   \[[`58f7a9e096`](https://togithub.com/nodejs/node/commit/58f7a9e096)] - **meta**: add primordials strategic initiative (Benjamin Gruenbaum) [#&#8203;49706](https://togithub.com/nodejs/node/pull/49706)
-   \[[`5366027756`](https://togithub.com/nodejs/node/commit/5366027756)] - **meta**: bump github/codeql-action from 2.21.2 to 2.21.5 (dependabot\[bot]) [#&#8203;49438](https://togithub.com/nodejs/node/pull/49438)
-   \[[`fe26b74082`](https://togithub.com/nodejs/node/commit/fe26b74082)] - **meta**: bump rtCamp/action-slack-notify from 2.2.0 to 2.2.1 (dependabot\[bot]) [#&#8203;49437](https://togithub.com/nodejs/node/pull/49437)
-   \[[`b0ce78a75b`](https://togithub.com/nodejs/node/commit/b0ce78a75b)] - **module**: fix the leak in SourceTextModule and ContextifySript (Joyee Cheung) [#&#8203;48510](https://togithub.com/nodejs/node/pull/48510)
-   \[[`4e578f8ab1`](https://togithub.com/nodejs/node/commit/4e578f8ab1)] - **module**: fix leak of vm.SyntheticModule (Joyee Cheung) [#&#8203;48510](https://togithub.com/nodejs/node/pull/48510)
-   \[[`69e4218772`](https://togithub.com/nodejs/node/commit/69e4218772)] - **module**: use symbol in WeakMap to manage host defined options (Joyee Cheung) [#&#8203;48510](https://togithub.com/nodejs/node/pull/48510)
-   \[[`96874e8fbc`](https://togithub.com/nodejs/node/commit/96874e8fbc)] - **node-api**: enable uncaught exceptions policy by default (Chengzhong Wu) [#&#8203;49313](https://togithub.com/nodejs/node/pull/49313)
-   \[[`b931aeadfd`](https://togithub.com/nodejs/node/commit/b931aeadfd)] - **perf_hooks**: reduce overhead of new performance_entries (Vinicius Lourenço) [#&#8203;49803](https://togithub.com/nodejs/node/pull/49803)
-   \[[`ad043bac31`](https://togithub.com/nodejs/node/commit/ad043bac31)] - **process**: add custom dir support for heapsnapshot-signal (Jithil P Ponnan) [#&#8203;47854](https://togithub.com/nodejs/node/pull/47854)
-   \[[`8a7c10194c`](https://togithub.com/nodejs/node/commit/8a7c10194c)] - **repl**: don't accumulate excess indentation in .load (Daniel X Moore) [#&#8203;49461](https://togithub.com/nodejs/node/pull/49461)
-   \[[`10a2adeed5`](https://togithub.com/nodejs/node/commit/10a2adeed5)] - **src**: improve error message when ICU data cannot be initialized (Joyee Cheung) [#&#8203;49666](https://togithub.com/nodejs/node/pull/49666)
-   \[[`ce37688bac`](https://togithub.com/nodejs/node/commit/ce37688bac)] - **src**: remove unnecessary todo (Rafael Gonzaga) [#&#8203;49227](https://togithub.com/nodejs/node/pull/49227)
-   \[[`f611583b71`](https://togithub.com/nodejs/node/commit/f611583b71)] - **src**: use SNAPSHOT_SERDES to log snapshot ser/deserialization (Joyee Cheung) [#&#8203;49637](https://togithub.com/nodejs/node/pull/49637)
-   \[[`a597cb8457`](https://togithub.com/nodejs/node/commit/a597cb8457)] - **src**: port Pipe to uv_pipe_bind2, uv_pipe_connect2 (Geoff Goodman) [#&#8203;49667](https://togithub.com/nodejs/node/pull/49667)
-   \[[`fb21062338`](https://togithub.com/nodejs/node/commit/fb21062338)] - **src**: set --rehash-snapshot explicitly (Joyee Cheung) [#&#8203;49556](https://togithub.com/nodejs/node/pull/49556)
-   \[[`14ece0aa76`](https://togithub.com/nodejs/node/commit/14ece0aa76)] - **(SEMVER-MINOR)** **src**: allow embedders to override NODE_MODULE_VERSION (Cheng Zhao) [#&#8203;49279](https://togithub.com/nodejs/node/pull/49279)
-   \[[`4b5e23c71b`](https://togithub.com/nodejs/node/commit/4b5e23c71b)] - **src**: set ModuleWrap internal fields only once (Joyee Cheung) [#&#8203;49391](https://togithub.com/nodejs/node/pull/49391)
-   \[[`2d3f5c7cab`](https://togithub.com/nodejs/node/commit/2d3f5c7cab)] - **src**: fix fs_type_to_name default value (Mustafa Ateş Uzun) [#&#8203;49239](https://togithub.com/nodejs/node/pull/49239)
-   \[[`cfbcb1059c`](https://togithub.com/nodejs/node/commit/cfbcb1059c)] - **src**: fix comment on StreamResource (rogertyang) [#&#8203;49193](https://togithub.com/nodejs/node/pull/49193)
-   \[[`39fb83ad16`](https://togithub.com/nodejs/node/commit/39fb83ad16)] - **src**: do not rely on the internal field being default to undefined (Joyee Cheung) [#&#8203;49413](https://togithub.com/nodejs/node/pull/49413)
-   \[[`9fd67fbff0`](https://togithub.com/nodejs/node/commit/9fd67fbff0)] - **stream**: use bitmap in writable state (Raz Luvaton) [#&#8203;49834](https://togithub.com/nodejs/node/pull/49834)
-   \[[`0ccd4638ac`](https://togithub.com/nodejs/node/commit/0ccd4638ac)] - **stream**: use bitmap in readable state (Benjamin Gruenbaum) [#&#8203;49745](https://togithub.com/nodejs/node/pull/49745)
-   \[[`b29d927010`](https://togithub.com/nodejs/node/commit/b29d927010)] - **stream**: improve readable webstream `pipeTo` (Raz Luvaton) [#&#8203;49690](https://togithub.com/nodejs/node/pull/49690)
-   \[[`7c5e322346`](https://togithub.com/nodejs/node/commit/7c5e322346)] - **stream**: improve webstream readable async iterator performance (Raz Luvaton) [#&#8203;49662](https://togithub.com/nodejs/node/pull/49662)
-   \[[`be211ef818`](https://togithub.com/nodejs/node/commit/be211ef818)] - **test**: deflake test-vm-contextified-script-leak (Joyee Cheung) [#&#8203;49710](https://togithub.com/nodejs/node/pull/49710)
-   \[[`355f10dab2`](https://togithub.com/nodejs/node/commit/355f10dab2)] - **test**: use checkIfCollectable in vm leak tests (Joyee Cheung) [#&#8203;49671](https://togithub.com/nodejs/node/pull/49671)
-   \[[`17cfc531aa`](https://togithub.com/nodejs/node/commit/17cfc531aa)] - **test**: add checkIfCollectable to test/common/gc.js (Joyee Cheung) [#&#8203;49671](https://togithub.com/nodejs/node/pull/49671)
-   \[[`e49a573752`](https://togithub.com/nodejs/node/commit/e49a573752)] - **test**: add os setPriority, getPriority test coverage (Wael) [#&#8203;38771](https://togithub.com/nodejs/node/pull/38771)
-   \[[`5f02711522`](https://togithub.com/nodejs/node/commit/5f02711522)] - **test**: deflake test-runner-output (Moshe Atlow) [#&#8203;49878](https://togithub.com/nodejs/node/pull/49878)
-   \[[`cd9754d6a7`](https://togithub.com/nodejs/node/commit/cd9754d6a7)] - **test**: mark test-runner-output as flaky (Joyee Cheung) [#&#8203;49854](https://togithub.com/nodejs/node/pull/49854)
-   \[[`5ad00424dd`](https://togithub.com/nodejs/node/commit/5ad00424dd)] - **test**: use mustSucceed instead of mustCall (SiddharthDevulapalli) [#&#8203;49788](https://togithub.com/nodejs/node/pull/49788)
-   \[[`3db9b40081`](https://togithub.com/nodejs/node/commit/3db9b40081)] - **test**: refactor test-readline-async-iterators into a benchmark (Shubham Pandey) [#&#8203;49237](https://togithub.com/nodejs/node/pull/49237)
-   \[[`2cc5ad7859`](https://togithub.com/nodejs/node/commit/2cc5ad7859)] - ***Revert*** "**test**: mark test-http-regr-[gh-2928](https://togithub.com/nodejs/node/issues/2928) as flaky" (Luigi Pinca) [#&#8203;49708](https://togithub.com/nodejs/node/pull/49708)
-   \[[`e5185b053c`](https://togithub.com/nodejs/node/commit/e5185b053c)] - **test**: use `fs.constants` for `fs.access` constants (Livia Medeiros) [#&#8203;49685](https://togithub.com/nodejs/node/pull/49685)
-   \[[`b9e5b43462`](https://togithub.com/nodejs/node/commit/b9e5b43462)] - **test**: deflake test-http-regr-[gh-2928](https://togithub.com/nodejs/node/issues/2928) (Luigi Pinca) [#&#8203;49574](https://togithub.com/nodejs/node/pull/49574)
-   \[[`1fffda504e`](https://togithub.com/nodejs/node/commit/1fffda504e)] - **test**: fix argument computation in embedtest (Joyee Cheung) [#&#8203;49506](https://togithub.com/nodejs/node/pull/49506)
-   \[[`6e56f2db52`](https://togithub.com/nodejs/node/commit/6e56f2db52)] - **test**: skip test-child-process-stdio-reuse-readable-stdio on Windows (Joyee Cheung) [#&#8203;49621](https://togithub.com/nodejs/node/pull/49621)
-   \[[`ab3afb330d`](https://togithub.com/nodejs/node/commit/ab3afb330d)] - **test**: mark test-runner-watch-mode as flaky (Joyee Cheung) [#&#8203;49627](https://togithub.com/nodejs/node/pull/49627)
-   \[[`185d9b50db`](https://togithub.com/nodejs/node/commit/185d9b50db)] - **test**: deflake test-tls-socket-close (Luigi Pinca) [#&#8203;49575](https://togithub.com/nodejs/node/pull/49575)
-   \[[`c70c74a9e6`](https://togithub.com/nodejs/node/commit/c70c74a9e6)] - **test**: show more info on failure in test-cli-syntax-require.js (Joyee Cheung) [#&#8203;49561](https://togithub.com/nodejs/node/pull/49561)
-   \[[`ed7c6d1114`](https://togithub.com/nodejs/node/commit/ed7c6d1114)] - **test**: mark test-http-regr-[gh-2928](https://togithub.com/nodejs/node/issues/2928) as flaky (Joyee Cheung) [#&#8203;49565](https://togithub.com/nodejs/node/pull/49565)
-   \[[`3599eebab9`](https://togithub.com/nodejs/node/commit/3599eebab9)] - **test**: use spawnSyncAndExitWithoutError in sea tests (Joyee Cheung) [#&#8203;49543](https://togithub.com/nodejs/node/pull/49543)
-   \[[`f79b153e89`](https://togithub.com/nodejs/node/commit/f79b153e89)] - **test**: use spawnSyncAndExitWithoutError in test/common/sea.js (Joyee Cheung) [#&#8203;49543](https://togithub.com/nodejs/node/pull/49543)
-   \[[`c079c73769`](https://togithub.com/nodejs/node/commit/c079c73769)] - **test**: use setImmediate() in test-heapdump-shadowrealm.js (Joyee Cheung) [#&#8203;49573](https://togithub.com/nodejs/node/pull/49573)
-   \[[`667a92493c`](https://togithub.com/nodejs/node/commit/667a92493c)] - **test**: skip test-child-process-pipe-dataflow.js on Windows (Joyee Cheung) [#&#8203;49563](https://togithub.com/nodejs/node/pull/49563)
-   \[[`91af0a9a3c`](https://togithub.com/nodejs/node/commit/91af0a9a3c)] - ***Revert*** "**test**: ignore the copied entry_point.c" (Chengzhong Wu) [#&#8203;49515](https://togithub.com/nodejs/node/pull/49515)
-   \[[`567afc71b8`](https://togithub.com/nodejs/node/commit/567afc71b8)] - **test**: avoid copying test source files (Chengzhong Wu) [#&#8203;49515](https://togithub.com/nodejs/node/pull/49515)
-   \[[`ced25a976d`](https://togithub.com/nodejs/node/commit/ced25a976d)] - **test**: increase coverage of `Module.register` and `initialize` hook (Antoine du Hamel) [#&#8203;49532](https://togithub.com/nodejs/node/pull/49532)
-   \[[`be02fbdb8a`](https://togithub.com/nodejs/node/commit/be02fbdb8a)] - **test**: isolate `globalPreload` tests (Geoffrey Booth) [#&#8203;49545](https://togithub.com/nodejs/node/pull/49545)
-   \[[`f214428845`](https://togithub.com/nodejs/node/commit/f214428845)] - **test**: split test-crypto-dh to avoid timeout on slow machines in the CI (Joyee Cheung) [#&#8203;49492](https://togithub.com/nodejs/node/pull/49492)
-   \[[`3987094569`](https://togithub.com/nodejs/node/commit/3987094569)] - **test**: make `test-dotenv-node-options` locale-independent (Livia Medeiros) [#&#8203;49470](https://togithub.com/nodejs/node/pull/49470)
-   \[[`34c1741792`](https://togithub.com/nodejs/node/commit/34c1741792)] - **test**: add test for urlstrings usage in `node:fs` (Livia Medeiros) [#&#8203;49471](https://togithub.com/nodejs/node/pull/49471)
-   \[[`c3c6c4f007`](https://togithub.com/nodejs/node/commit/c3c6c4f007)] - **test**: make test-worker-prof more robust (Joyee Cheung) [#&#8203;49274](https://togithub.com/nodejs/node/pull/49274)
-   \[[`843df1a4da`](https://togithub.com/nodejs/node/commit/843df1a4da)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#&#8203;49714](https://togithub.com/nodejs/node/pull/49714)
-   \[[`80b342cc38`](https://togithub.com/nodejs/node/commit/80b342cc38)] - **(SEMVER-MINOR)** **test_runner**: accept `testOnly` in `run` (Moshe Atlow) [#&#8203;49753](https://togithub.com/nodejs/node/pull/49753)
-   \[[`76865515b9`](https://togithub.com/nodejs/node/commit/76865515b9)] - **test_runner**: fix test runner watch mode when no positional arguments (Moshe Atlow) [#&#8203;49578](https://togithub.com/nodejs/node/pull/49578)
-   \[[`17a05b141d`](https://togithub.com/nodejs/node/commit/17a05b141d)] - **(SEMVER-MINOR)** **test_runner**: add junit reporter (Moshe Atlow) [#&#8203;49614](https://togithub.com/nodejs/node/pull/49614)
-   \[[`5672e38457`](https://togithub.com/nodejs/node/commit/5672e38457)] - **test_runner**: add jsdocs to mock.js (Caio Borghi) [#&#8203;49555](https://togithub.com/nodejs/node/pull/49555)
-   \[[`b4d42a8f2b`](https://togithub.com/nodejs/node/commit/b4d42a8f2b)] - **test_runner**: fix invalid timer call (Erick Wendel) [#&#8203;49477](https://togithub.com/nodejs/node/pull/49477)
-   \[[`f755e6786b`](https://togithub.com/nodejs/node/commit/f755e6786b)] - **test_runner**: add jsdocs to MockTimers (Erick Wendel) [#&#8203;49476](https://togithub.com/nodejs/node/pull/49476)
-   \[[`e7285d4bf0`](https://togithub.com/nodejs/node/commit/e7285d4bf0)] - **test_runner**: fix typescript coverage (Moshe Atlow) [#&#8203;49406](https://togithub.com/nodejs/node/pull/49406)
-   \[[`07a2e29bf3`](https://togithub.com/nodejs/node/commit/07a2e29bf3)] - **tools**: support updating [@&#8203;reporters/github](https://togithub.com/reporters/github) manually (Moshe Atlow) [#&#8203;49871](https://togithub.com/nodejs/node/pull/49871)
-   \[[`5ac6722031`](https://togithub.com/nodejs/node/commit/5ac6722031)] - **tools**: skip ruff on tools/node_modules (Moshe Atlow) [#&#8203;49838](https://togithub.com/nodejs/node/pull/49838)
-   \[[`462228bd24`](https://togithub.com/nodejs/node/commit/462228bd24)] - **tools**: fix uvwasi updater (Michael Dawson) [#&#8203;49682](https://togithub.com/nodejs/node/pull/49682)
-   \[[`ff81bfb958`](https://togithub.com/nodejs/node/commit/ff81bfb958)] - **tools**: update lint-md-dependencies to rollup@3.29.2 (Node.js GitHub Bot) [#&#8203;49679](https://togithub.com/nodejs/node/pull/49679)
-   \[[`08ffc6344c`](https://togithub.com/nodejs/node/commit/08ffc6344c)] - **tools**: restrict internal code from using public `url` module (LiviaMedeiros) [#&#8203;49590](https://togithub.com/nodejs/node/pull/49590)
-   \[[`728ebf6c97`](https://togithub.com/nodejs/node/commit/728ebf6c97)] - **tools**: update eslint to 8.49.0 (Node.js GitHub Bot) [#&#8203;49586](https://togithub.com/nodejs/node/pull/49586)
-   \[[`20d038ffb1`](https://togithub.com/nodejs/node/commit/20d038ffb1)] - **tools**: update lint-md-dependencies to rollup@3.29.0 unified@11.0.3 (Node.js GitHub Bot) [#&#8203;49584](https://togithub.com/nodejs/node/pull/49584)
-   \[[`210c15bd12`](https://togithub.com/nodejs/node/commit/210c15bd12)] - **tools**: allow passing absolute path of config.gypi in js2c (Cheng Zhao) [#&#8203;49162](https://togithub.com/nodejs/node/pull/49162)
-   \[[`e341efe173`](https://togithub.com/nodejs/node/commit/e341efe173)] - **tools**: configure never-stale label correctly (Michaël Zasso) [#&#8203;49498](https://togithub.com/nodejs/node/pull/49498)
-   \[[`a8a8a498ce`](https://togithub.com/nodejs/node/commit/a8a8a498ce)] - **tools**: update doc dependencies (Node.js GitHub Bot) [#&#8203;49467](https://togithub.com/nodejs/node/pull/49467)
-   \[[`ac06607f9e`](https://togithub.com/nodejs/node/commit/ac06607f9e)] - **typings**: fix missing property in `ExportedHooks` (Antoine du Hamel) [#&#8203;49567](https://togithub.com/nodejs/node/pull/49567)
-   \[[`097b59807a`](https://togithub.com/nodejs/node/commit/097b59807a)] - **url**: improve invalid url performance (Yagiz Nizipli) [#&#8203;49692](https://togithub.com/nodejs/node/pull/49692)
-   \[[`7c2060cfac`](https://togithub.com/nodejs/node/commit/7c2060cfac)] - **util**: add `getCwdSafe` internal util fn (João Lenon) [#&#8203;48434](https://togithub.com/nodejs/node/pull/48434)
-   \[[`c23c60f545`](https://togithub.com/nodejs/node/commit/c23c60f545)] - **zlib**: disable CRC32 SIMD optimization (Luigi Pinca) [#&#8203;49511](https://togithub.com/nodejs/node/pull/49511)

### [`v20.7.0`](https://togithub.com/nodejs/node/releases/tag/v20.7.0): 2023-09-18, Version 20.7.0 (Current), @&#8203;UlisesGascon

[Compare Source](https://togithub.com/nodejs/node/compare/v20.6.1...v20.7.0)

##### Notable Changes

-   \[[`022f1b70c1`](https://togithub.com/nodejs/node/commit/022f1b70c1)] - **src**: support multiple `--env-file` declarations (Yagiz Nizipli) [#&#8203;49542](https://togithub.com/nodejs/node/pull/49542)
-   \[[`4a1d1cad61`](https://togithub.com/nodejs/node/commit/4a1d1cad61)] - **crypto**: update root certificates to NSS 3.93 (Node.js GitHub Bot) [#&#8203;49341](https://togithub.com/nodejs/node/pull/49341)
-   \[[`a1a65f593c`](https://togithub.com/nodejs/node/commit/a1a65f593c)] - **deps**: upgrade npm to 10.1.0 (npm team) [#&#8203;49570](https://togithub.com/nodejs/node/pull/49570)
-   \[[`6c2480cad9`](https://togithub.com/nodejs/node/commit/6c2480cad9)] - **(SEMVER-MINOR)** **deps**: upgrade npm to 10.0.0 (npm team) [#&#8203;49423](https://togithub.com/nodejs/node/pull/49423)
-   \[[`bef900e56b`](https://togithub.com/nodejs/node/commit/bef900e56b)] - **doc**: move and rename loaders section (Geoffrey Booth) [#&#8203;49261](https://togithub.com/nodejs/node/pull/49261)
-   \[[`db4ce8a593`](https://togithub.com/nodejs/node/commit/db4ce8a593)] - **doc**: add release key for Ulises Gascon (Ulises Gascón) [#&#8203;49196](https://togithub.com/nodejs/node/pull/49196)
-   \[[`11c85ffa98`](https://togithub.com/nodejs/node/commit/11c85ffa98)] - **(SEMVER-MINOR)** **lib**: add api to detect whether source-maps are enabled (翠 / green) [#&#8203;46391](https://togithub.com/nodejs/node/pull/46391)
-   \[[`ec51e25ed7`](https://togithub.com/nodejs/node/commit/ec51e25ed7)] - **src,permission**: add multiple allow-fs-\* flags (Carlos Espa) [#&#8203;49047](https://togithub.com/nodejs/node/pull/49047)
-   \[[`efdc95fbc0`](https://togithub.com/nodejs/node/commit/efdc95fbc0)] - **(SEMVER-MINOR)** **test_runner**: expose location of tests (Colin Ihrig) [#&#8203;48975](https://togithub.com/nodejs/node/pull/48975)

##### Commits

-   \[[`e84515594e`](https://togithub.com/nodejs/node/commit/e84515594e)] - **benchmark**: use `tmpdir.resolve()` (Livia Medeiros) [#&#8203;49137](https://togithub.com/nodejs/node/pull/49137)
-   \[[`f37444e896`](https://togithub.com/nodejs/node/commit/f37444e896)] - **bootstrap**: build code cache from deserialized isolate (Joyee Cheung) [#&#8203;49099](https://togithub.com/nodejs/node/pull/49099)
-   \[[`af6dc1754d`](https://togithub.com/nodejs/node/commit/af6dc1754d)] - **bootstrap**: do not generate code cache in an unfinalized isolate (Joyee Cheung) [#&#8203;49108](https://togithub.com/nodejs/node/pull/49108)
-   \[[`cade5716df`](https://togithub.com/nodejs/node/commit/cade5716df)] - **build**: add symlink to `compile_commands.json` file if needed (Juan José) [#&#8203;49260](https://togithub.com/nodejs/node/pull/49260)
-   \[[`34a2590b05`](https://togithub.com/nodejs/node/commit/34a2590b05)] - **build**: expand when we run internet tests (Michael Dawson) [#&#8203;49218](https://togithub.com/nodejs/node/pull/49218)
-   \[[`f637fd46ab`](https://togithub.com/nodejs/node/commit/f637fd46ab)] - **build**: fix typo `libray` -> `library` (configure.py) (michalbiesek) [#&#8203;49106](https://togithub.com/nodejs/node/pull/49106)
-   \[[`ef3d8dd493`](https://togithub.com/nodejs/node/commit/ef3d8dd493)] - **crypto**: remove webcrypto EdDSA key checks and properties (Filip Skokan) [#&#8203;49408](https://togithub.com/nodejs/node/pull/49408)
-   \[[`4a1d1cad61`](https://togithub.com/nodejs/node/commit/4a1d1cad61)] - **crypto**: update root certificates to NSS 3.93 (Node.js GitHub Bot) [#&#8203;49341](https://togithub.com/nodejs/node/pull/49341)
-   \[[`7eb10a38ea`](https://togithub.com/nodejs/node/commit/7eb10a38ea)] - **crypto**: remove getDefaultEncoding() (Tobias Nießen) [#&#8203;49170](https://togithub.com/nodejs/node/pull/49170)
-   \[[`772496c030`](https://togithub.com/nodejs/node/commit/772496c030)] - **crypto**: remove default encoding from DiffieHellman (Tobias Nießen) [#&#8203;49169](https://togithub.com/nodejs/node/pull/49169)
-   \[[`c795083232`](https://togithub.com/nodejs/node/commit/c795083232)] - **crypto**: remove default encoding from Hash/Hmac (Tobias Nießen) [#&#8203;49167](https://togithub.com/nodejs/node/pull/49167)
-   \[[`08197aa010`](https://togithub.com/nodejs/node/commit/08197aa010)] - **crypto**: remove default encoding from sign/verify (Tobias Nießen) [#&#8203;49145](https://togithub.com/nodejs/node/pull/49145)
-   \[[`a1a65f593c`](https://togithub.com/nodejs/node/commit/a1a65f593c)] - **deps**: upgrade npm to 10.1.0 (npm team) [#&#8203;49570](https://togithub.com/nodejs/node/pull/49570)
-   \[[`6c2480cad9`](https://togithub.com/nodejs/node/commit/6c2480cad9)] - **(SEMVER-MINOR)** **deps**: upgrade npm to 10.0.0 (npm team) [#&#8203;49423](https://togithub.com/nodejs/node/pull/49423)
-   \[[`84195d9584`](https://togithub.com/nodejs/node/commit/84195d9584)] - **deps**: add missing thread-common.c in uv.gyp (Santiago Gimeno) [#&#8203;49410](https://togithub.com/nodejs/node/pull/49410)
-   \[[`5b70b68b3d`](https://togithub.com/nodejs/node/commit/5b70b68b3d)] - **deps**: V8: cherry-pick [`eadaef5`](https://togithub.com/nodejs/node/commit/eadaef581c29) (Adam Majer) [#&#8203;49401](https://togithub.com/nodejs/node/pull/49401)
-   \[[`fe34d632e8`](https://togithub.com/nodejs/node/commit/fe34d632e8)] - **deps**: update zlib to 1.2.13.1-motley-f5fd0ad (Node.js GitHub Bot) [#&#8203;49252](https://togithub.com/nodejs/node/pull/49252)
-   \[[`db4ce8a593`](https://togithub.com/nodejs/node/commit/db4ce8a593)] - **doc**: add release key for Ulises Gascon (Ulises Gascón) [#&#8203;49196](https://togithub.com/nodejs/node/pull/49196)
-   \[[`e5f3a694cf`](https://togithub.com/nodejs/node/commit/e5f3a694cf)] - **doc**: fix node-api call example (Chengzhong Wu) [#&#8203;49395](https://togithub.com/nodejs/node/pull/49395)
-   \[[`021345a724`](https://togithub.com/nodejs/node/commit/021345a724)] - **doc**: add news issue for Diagnostics WG (Michael Dawson) [#&#8203;49306](https://togithub.com/nodejs/node/pull/49306)
-   \[[`f82347266b`](https://togithub.com/nodejs/node/commit/f82347266b)] - **doc**: clarify policy expectations (Rafael Gonzaga) [#&#8203;48947](https://togithub.com/nodejs/node/pull/48947)
-   \[[`73cfd9c895`](https://togithub.com/nodejs/node/commit/73cfd9c895)] - **doc**: add print results for examples in `StringDecoder` (Jungku Lee) [#&#8203;49326](https://togithub.com/nodejs/node/pull/49326)
-   \[[`63ab591416`](https://togithub.com/nodejs/node/commit/63ab591416)] - **doc**: update outdated reference to NIST SP 800-131A (Tobias Nießen) [#&#8203;49316](https://togithub.com/nodejs/node/pull/49316)
-   \[[`935dfe2afd`](https://togithub.com/nodejs/node/commit/935dfe2afd)] - **doc**: use `cjs` as block code's type in `MockTimers` (Deokjin Kim) [#&#8203;49309](https://togithub.com/nodejs/node/pull/49309)
-   \[[`7c0cd2fb87`](https://togithub.com/nodejs/node/commit/7c0cd2fb87)] - **doc**: update `options.filter` description for `fs.cp` (Shubham Pandey) [#&#8203;49289](https://togithub.com/nodejs/node/pull/49289)
-   \[[`f72e79ea67`](https://togithub.com/nodejs/node/commit/f72e79ea67)] - **doc**: add riscv64 to list of architectures (Stewart X Addison) [#&#8203;49284](https://togithub.com/nodejs/node/pull/49284)
-   \[[`d19c710064`](https://togithub.com/nodejs/node/commit/d19c710064)] - **doc**: avoid "not currently recommended" (Tobias Nießen) [#&#8203;49300](https://togithub.com/nodejs/node/pull/49300)
-   \[[`ae656101c0`](https://togithub.com/nodejs/node/commit/ae656101c0)] - **doc**: update module hooks docs (Geoffrey Booth) [#&#8203;49265](https://togithub.com/nodejs/node/pull/49265)
-   \[[`fefbdb92f2`](https://togithub.com/nodejs/node/commit/fefbdb92f2)] - **doc**: modify param description for end(),write() in `StringDecoder` (Jungku Lee) [#&#8203;49285](https://togithub.com/nodejs/node/pull/49285)
-   \[[`59e66a1ebe`](https://togithub.com/nodejs/node/commit/59e66a1ebe)] - **doc**: use NODE_API_SUPPORTED_VERSION_MAX in release doc (Cheng Zhao) [#&#8203;49268](https://togithub.com/nodejs/node/pull/49268)
-   \[[`ac3b88449b`](https://togithub.com/nodejs/node/commit/ac3b88449b)] - **doc**: fix typo in `stream.finished` documentation (Antoine du Hamel) [#&#8203;49271](https://togithub.com/nodejs/node/pull/49271)
-   \[[`7428ebf6c3`](https://togithub.com/nodejs/node/commit/7428ebf6c3)] - **doc**: update description for `percent_encode` sets in `WHATWG API` (Jungku Lee) [#&#8203;49258](https://togithub.com/nodejs/node/pull/49258)
-   \[[`bef900e56b`](https://togithub.com/nodejs/node/commit/bef900e56b)] - **doc**: move and rename loaders section (Geoffrey Booth) [#&#8203;49261](https://togithub.com/nodejs/node/pull/49261)
-   \[[`a22e0d9696`](https://togithub.com/nodejs/node/commit/a22e0d9696)] - **doc**: clarify use of Uint8Array for n-api (Fedor Indutny) [#&#8203;48742](https://togithub.com/nodejs/node/pull/48742)
-   \[[`1704f24cb9`](https://togithub.com/nodejs/node/commit/1704f24cb9)] - **doc**: add signature for `module.register` (Geoffrey Booth) [#&#8203;49251](https://togithub.com/nodejs/node/pull/49251)
-   \[[`5a363bb01b`](https://togithub.com/nodejs/node/commit/5a363bb01b)] - **doc**: caveat unavailability of `import.meta.resolve` in custom loaders (Jacob Smith) [#&#8203;49242](https://togithub.com/nodejs/node/pull/49242)
-   \[[`8101f2b259`](https://togithub.com/nodejs/node/commit/8101f2b259)] - **doc**: use same name in the doc as in the code (Hyunjin Kim) [#&#8203;49216](https://togithub.com/nodejs/node/pull/49216)
-   \[[`edf278d60d`](https://togithub.com/nodejs/node/commit/edf278d60d)] - **doc**: add notable-change label mention to PR template (Rafael Gonzaga) [#&#8203;49188](https://togithub.com/nodejs/node/pull/49188)
-   \[[`3df2251a6a`](https://togithub.com/nodejs/node/commit/3df2251a6a)] - **doc**: add h1 summary to security release process (Rafael Gonzaga) [#&#8203;49112](https://togithub.com/nodejs/node/pull/49112)
-   \[[`9fcd99a744`](https://togithub.com/nodejs/node/commit/9fcd99a744)] - **doc**: update to semver-minor releases by default (Rafael Gonzaga) [#&#8203;49175](https://togithub.com/nodejs/node/pull/49175)
-   \[[`777931f499`](https://togithub.com/nodejs/node/commit/777931f499)] - **doc**: fix wording in napi_async_init (Tobias Nießen) [#&#8203;49180](https://togithub.com/nodejs/node/pull/49180)
-   \[[`f45c8e10c0`](https://togithub.com/nodejs/node/commit/f45c8e10c0)] - **doc,test**: add known path resolution issue in permission model (Tobias Nießen) [#&#8203;49155](https://togithub.com/nodejs/node/pull/49155)
-   \[[`a6cfea3f74`](https://togithub.com/nodejs/node/commit/a6cfea3f74)] - **esm**: align sync and async load implementations (Antoine du Hamel) [#&#8203;49152](https://togithub.com/nodejs/node/pull/49152)
-   \[[`9fac310b33`](https://togithub.com/nodejs/node/commit/9fac310b33)] - **fs**: add the options param description in openAsBlob() (Yeseul Lee) [#&#8203;49308](https://togithub.com/nodejs/node/pull/49308)
-   \[[`92772a8175`](https://togithub.com/nodejs/node/commit/92772a8175)] - **fs**: remove redundant code in readableWebStream() (Deokjin Kim) [#&#8203;49298](https://togithub.com/nodejs/node/pull/49298)
-   \[[`88ba79b083`](https://togithub.com/nodejs/node/commit/88ba79b083)] - **fs**: make sure to write entire buffer (Robert Nagy) [#&#8203;49211](https://togithub.com/nodejs/node/pull/49211)
-   \[[`11c85ffa98`](https://togithub.com/nodejs/node/commit/11c85ffa98)] - **(SEMVER-MINOR)** **lib**: add api to detect whether source-maps are enabled (翠 / green) [#&#8203;46391](https://togithub.com/nodejs/node/pull/46391)
-   \[[`c12711ebfe`](https://togithub.com/nodejs/node/commit/c12711ebfe)] - **lib**: implement WeakReference on top of JS WeakRef (Joyee Cheung) [#&#8203;49053](https://togithub.com/nodejs/node/pull/49053)
-   \[[`9a0891f88d`](https://togithub.com/nodejs/node/commit/9a0891f88d)] - **meta**: bump step-security/harden-runner from 2.5.0 to 2.5.1 (dependabot\[bot]) [#&#8203;49435](https://togithub.com/nodejs/node/pull/49435)
-   \[[`ae67f41ef1`](https://togithub.com/nodejs/node/commit/ae67f41ef1)] - **meta**: bump actions/checkout from 3.5.3 to 3.6.0 (dependabot\[bot]) [#&#8203;49436](https://togithub.com/nodejs/node/pull/49436)
-   \[[`71b4411fb2`](https://togithub.com/nodejs/node/commit/71b4411fb2)] - **meta**: bump actions/setup-node from 3.7.0 to 3.8.1 (dependabot\[bot]) [#&#8203;49434](https://togithub.com/nodejs/node/pull/49434)
-   \[[`83b7d3a395`](https://togithub.com/nodejs/node/commit/83b7d3a395)] - **meta**: remove modules team from CODEOWNERS (Benjamin Gruenbaum) [#&#8203;49412](https://togithub.com/nodejs/node/pull/49412)
-   \[[`81ff68c45c`](https://togithub.com/nodejs/node/commit/81ff68c45c)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#&#8203;49264](https://togithub.com/nodejs/node/pull/49264)
-   \[[`ab975233cc`](https://togithub.com/nodejs/node/commit/ab975233cc)] - **meta**: mention nodejs/tsc when changing GH templates (Rafael Gonzaga) [#&#8203;49189](https://togithub.com/nodejs/node/pull/49189)
-   \[[`ceaa5494de`](https://togithub.com/nodejs/node/commit/ceaa5494de)] - **meta**: add test/reporters to codeowners (Chemi Atlow) [#&#8203;49186](https://togithub.com/nodejs/node/pull/49186)
-   \[[`de0a51b7cf`](https://togithub.com/nodejs/node/commit/de0a51b7cf)] - **net**: improve performance of isIPv4 and isIPv6 (Uzlopak) [#&#8203;49568](https://togithub.com/nodejs/node/pull/49568)
-   \[[`8d0913bf95`](https://togithub.com/nodejs/node/commit/8d0913bf95)] - **net**: use asserts in JS Socket Stream to catch races in future (Tim Perry) [#&#8203;49400](https://togithub.com/nodejs/node/pull/49400)
-   \[[`2486836a7d`](https://togithub.com/nodejs/node/commit/2486836a7d)] - **net**: fix crash due to simultaneous close/shutdown on JS Stream Sockets (Tim Perry) [#&#8203;49400](https://togithub.com/nodejs/node/pull/49400)
-   \[[`7a808340cd`](https://togithub.com/nodejs/node/commit/7a808340cd)] - **node-api**: fix compiler warning in node_api.h (Michael Graeb) [#&#8203;49103](https://togithub.com/nodejs/node/pull/49103)
-   \[[`30f26a99f4`](https://togithub.com/nodejs/node/commit/30f26a99f4)] - **permission**: ensure to resolve path when calling mkdtemp (RafaelGSS) [nodejs-private/node-private#440](https://togithub.com/nodejs-private/node-private/pull/440)
-   \[[`5051c75a5b`](https://togithub.com/nodejs/node/commit/5051c75a5b)] - **policy**: fix path to URL conversion (Antoine du Hamel) [#&#8203;49133](https://togithub.com/nodejs/node/pull/49133)
-   \[[`173aed4757`](https://togithub.com/nodejs/node/commit/173aed4757)] - **report**: fix recent coverity warning (Michael Dawson) [#&#8203;48954](https://togithub.com/nodejs/node/pull/48954)
-   \[[`d7ff78b442`](https://togithub.com/nodejs/node/commit/d7ff78b442)] - **sea**: generate code cache with deserialized isolate (Joyee Cheung) [#&#8203;49226](https://togithub.com/nodejs/node/pull/49226)
-   \[[`022f1b70c1`](https://togithub.com/nodejs/node/commit/022f1b70c1)] - **src**: support multiple `--env-file` declarations (Yagiz Nizipli) [#&#8203;49542](https://togithub.com/nodejs/node/pull/49542)
-   \[[`154b1c2115`](https://togithub.com/nodejs/node/commit/154b1c2115)] - **src**: don't overwrite environment from .env file (Phil Nash) [#&#8203;49424](https://togithub.com/nodejs/node/pull/49424)
-   \[[`dc4de1c69b`](https://togithub.com/nodejs/node/commit/dc4de1c69b)] - **src**: modify code for empty string (pluris) [#&#8203;49336](https://togithub.com/nodejs/node/pull/49336)
-   \[[`701c46f967`](https://togithub.com/nodejs/node/commit/701c46f967)] - **src**: remove unused PromiseWrap-related code (Joyee Cheung) [#&#8203;49335](https://togithub.com/nodejs/node/pull/49335)
-   \[[`4a094dc7af`](https://togithub.com/nodejs/node/commit/4a094dc7af)] - **src**: rename IsAnyByteSource to IsAnyBufferSource (Tobias Nießen) [#&#8203;49346](https://togithub.com/nodejs/node/pull/49346)
-   \[[`55d6649175`](https://togithub.com/nodejs/node/commit/55d6649175)] - **src**: support snapshot deserialization in RAIIIsolate (Joyee Cheung) [#&#8203;49226](https://togithub.com/nodejs/node/pull/49226)
-   \[[`dc092864ef`](https://togithub.com/nodejs/node/commit/dc092864ef)] - **src**: remove unused function `GetName()` in node_perf (Jungku Lee) [#&#8203;49244](https://togithub.com/nodejs/node/pull/49244)
-   \[[`f2552a410e`](https://togithub.com/nodejs/node/commit/f2552a410e)] - **src**: use ARES_SUCCESS instead of 0 (Jungku Lee) [#&#8203;49048](https://togithub.com/nodejs/node/pull/49048)
-   \[[`4a9ae31519`](https://togithub.com/nodejs/node/commit/4a9ae31519)] - **src**: add a condition if the argument of `DomainToUnicode` is empty (Jungku Lee) [#&#8203;49097](https://togithub.com/nodejs/node/pull/49097)
-   \[[`f460362cdf`](https://togithub.com/nodejs/node/commit/f460362cdf)] - **src**: remove C++ WeakReference implementation (Joyee Cheung) [#&#8203;49053](https://togithub.com/nodejs/node/pull/49053)
-   \[[`2a35383b3e`](https://togithub.com/nodejs/node/commit/2a35383b3e)] - **src**: use per-realm GetBindingData() wherever applicable (Joyee Cheung) [#&#8203;49007](https://togithub.com/nodejs/node/pull/49007)
-   \[[`184bbddcf5`](https://togithub.com/nodejs/node/commit/184bbddcf5)] - **src**: add per-realm GetBindingData() method (Joyee Cheung) [#&#8203;49007](https://togithub.com/nodejs/node/pull/49007)
-   \[[`e9946885f9`](https://togithub.com/nodejs/node/commit/e9946885f9)] - **src**: serialize both BaseObject slots (Joyee Cheung) [#&#8203;48996](https://togithub.com/nodejs/node/pull/48996)
-   \[[`ec51e25ed7`](https://togithub.com/nodejs/node/commit/ec51e25ed7)] - **src,permission**: add multiple allow-fs-\* flags (Carlos Espa) [#&#8203;49047](https://togithub.com/nodejs/node/pull/49047)
-   \[[`8aac95de4b`](https://togithub.com/nodejs/node/commit/8aac95de4b)] - **stream**: improve tee perf by reduce `ReflectConstruct` usages (Raz Luvaton) [#&#8203;49546](https://togithub.com/nodejs/node/pull/49546)
-   \[[`0eea7fd8fb`](https://togithub.com/nodejs/node/commit/0eea7fd8fb)] - **stream**: use Buffer.from when constructor is a Buffer (Matthew Aitken) [#&#8203;49250](https://togithub.com/nodejs/node/pull/49250)
-   \[[`b961d9bd52`](https://togithub.com/nodejs/node/commit/b961d9bd52)] - **stream**: add `highWaterMark` for the map operator (Raz Luvaton) [#&#8203;49249](https://togithub.com/nodejs/node/pull/49249)
-   \[[`ca1384166d`](https://togithub.com/nodejs/node/commit/ca1384166d)] - **test**: fix warning for comment in embedtest (Jungku Lee) [#&#8203;49416](https://togithub.com/nodejs/node/pull/49416)
-   \[[`2a35782809`](https://togithub.com/nodejs/node/commit/2a35782809)] - **test**: simplify test-crypto-dh-group-setters (Tobias Nießen) [#&#8203;49404](https://togithub.com/nodejs/node/pull/49404)
-   \[[`6740f3c209`](https://togithub.com/nodejs/node/commit/6740f3c209)] - **test**: verify dynamic import call with absolute path strings (Chengzhong Wu) [#&#8203;49275](https://togithub.com/nodejs/node/pull/49275)
-   \[[`6ed47bd8fb`](https://togithub.com/nodejs/node/commit/6ed47bd8fb)] - **test**: reduce length in crypto keygen tests (Joyee Cheung) [#&#8203;49221](https://togithub.com/nodejs/node/pull/49221)
-   \[[`4faa30c553`](https://togithub.com/nodejs/node/commit/4faa30c553)] - **test**: split JWK async elliptic curve keygen tests (Joyee Cheung) [#&#8203;49221](https://togithub.com/nodejs/node/pull/49221)
-   \[[`e04a2603d8`](https://togithub.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 becomes conflicted, 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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44MS4zIiwidXBkYXRlZEluVmVyIjoiMzcuMjAwLjAiLCJ0YXJnZXRCcmFuY2giOiJjYW5hcnkifQ==-->
2024-02-23 09:03:57 +00:00
DarkSky
d9fee81b10 fix(server): handle unexpected error from storage provider (#5888)
![image](https://github.com/toeverything/AFFiNE/assets/25152247/5a914c7d-0cc2-44ad-97a9-3d39199d8131)

handle unexpected error in workspace usage calc
2024-02-23 08:53:32 +00:00
LongYinan
f003fa0968 chore: bump up all non-major dependencies (#5858)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@electron-forge/maker-base](https://togithub.com/electron/forge) | [`7.2.0` -> `7.3.0`](https://renovatebot.com/diffs/npm/@electron-forge%2fmaker-base/7.2.0/7.3.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@electron-forge%2fmaker-base/7.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@electron-forge%2fmaker-base/7.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@electron-forge%2fmaker-base/7.2.0/7.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@electron-forge%2fmaker-base/7.2.0/7.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@napi-rs/cli](https://togithub.com/napi-rs/napi-rs) | [`3.0.0-alpha.40` -> `3.0.0-alpha.41`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.0.0-alpha.40/3.0.0-alpha.41) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@napi-rs%2fcli/3.0.0-alpha.41?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@napi-rs%2fcli/3.0.0-alpha.41?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@napi-rs%2fcli/3.0.0-alpha.40/3.0.0-alpha.41?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@napi-rs%2fcli/3.0.0-alpha.40/3.0.0-alpha.41?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>electron/forge (@&#8203;electron-forge/maker-base)</summary>

### [`v7.3.0`](https://togithub.com/electron/forge/releases/tag/v7.3.0)

[Compare Source](https://togithub.com/electron/forge/compare/v7.2.0...v7.3.0)

##### What's Changed

##### Features

-   feat(plugin-vite): upgrade to vite@5 by [@&#8203;caoxiemeihao](https://togithub.com/caoxiemeihao) in [https://github.com/electron/forge/pull/3468](https://togithub.com/electron/forge/pull/3468)
-   feat: allow a custom out dir from forge config by [@&#8203;lutzroeder](https://togithub.com/lutzroeder) in [https://github.com/electron/forge/pull/3458](https://togithub.com/electron/forge/pull/3458)
-   feat(template-vite): patch types by [@&#8203;caoxiemeihao](https://togithub.com/caoxiemeihao) in [https://github.com/electron/forge/pull/3494](https://togithub.com/electron/forge/pull/3494)
-   feat: adds default fuses to templates by [@&#8203;yangannyx](https://togithub.com/yangannyx) in [https://github.com/electron/forge/pull/3480](https://togithub.com/electron/forge/pull/3480)
-   feat(publisher-github): option to automatically generate release notes by [@&#8203;dsanders11](https://togithub.com/dsanders11) in [https://github.com/electron/forge/pull/3484](https://togithub.com/electron/forge/pull/3484)

##### Fixes

-   fix(electron-release-publisher): change api/version endpoint in PublisherERS to use versions/sorted by [@&#8203;kgallagher52](https://togithub.com/kgallagher52) in [https://github.com/electron/forge/pull/3431](https://togithub.com/electron/forge/pull/3431)
-   fix(core): packageJSON won't be found when programmatic usage instead of CLI by [@&#8203;ianho](https://togithub.com/ianho) in [https://github.com/electron/forge/pull/3455](https://togithub.com/electron/forge/pull/3455)
-   fix: actually depend on preceeding groups by [@&#8203;MarshallOfSound](https://togithub.com/MarshallOfSound) in [https://github.com/electron/forge/pull/3438](https://togithub.com/electron/forge/pull/3438)
-   fix: normalize windows version with build part correctly by [@&#8203;rickymohk](https://togithub.com/rickymohk) in [https://github.com/electron/forge/pull/3461](https://togithub.com/electron/forge/pull/3461)
-   fix: .vscode settings.json changes on open by [@&#8203;lutzroeder](https://togithub.com/lutzroeder) in [https://github.com/electron/forge/pull/3460](https://togithub.com/electron/forge/pull/3460)
-   fix(plugin-vite): package volume size to large by [@&#8203;caoxiemeihao](https://togithub.com/caoxiemeihao) in [https://github.com/electron/forge/pull/3336](https://togithub.com/electron/forge/pull/3336)

##### Performance

-   refactor: only run webpack once for multi-arch packages by [@&#8203;MarshallOfSound](https://togithub.com/MarshallOfSound) in [https://github.com/electron/forge/pull/3437](https://togithub.com/electron/forge/pull/3437)

##### Other Changes

-   chore: update Packager by [@&#8203;erikian](https://togithub.com/erikian) in [https://github.com/electron/forge/pull/3419](https://togithub.com/electron/forge/pull/3419)
-   chore: bump electronjs/node to 2.2.0 (main) by [@&#8203;electron-roller](https://togithub.com/electron-roller) in [https://github.com/electron/forge/pull/3469](https://togithub.com/electron/forge/pull/3469)
-   chore(plugins/electronegativity): correct some config types  by [@&#8203;Dogdriip](https://togithub.com/Dogdriip) in [https://github.com/electron/forge/pull/3482](https://togithub.com/electron/forge/pull/3482)
-   chore: use Dependabot to update GitHub Actions deps by [@&#8203;dsanders11](https://togithub.com/dsanders11) in [https://github.com/electron/forge/pull/3487](https://togithub.com/electron/forge/pull/3487)
-   chore: bump electronjs/node to 2.2.1 (main) by [@&#8203;electron-roller](https://togithub.com/electron-roller) in [https://github.com/electron/forge/pull/3496](https://togithub.com/electron/forge/pull/3496)

##### New Contributors

-   [@&#8203;kgallagher52](https://togithub.com/kgallagher52) made their first contribution in [https://github.com/electron/forge/pull/3431](https://togithub.com/electron/forge/pull/3431)
-   [@&#8203;rickymohk](https://togithub.com/rickymohk) made their first contribution in [https://github.com/electron/forge/pull/3461](https://togithub.com/electron/forge/pull/3461)
-   [@&#8203;lutzroeder](https://togithub.com/lutzroeder) made their first contribution in [https://github.com/electron/forge/pull/3460](https://togithub.com/electron/forge/pull/3460)
-   [@&#8203;ianho](https://togithub.com/ianho) made their first contribution in [https://github.com/electron/forge/pull/3455](https://togithub.com/electron/forge/pull/3455)
-   [@&#8203;yangannyx](https://togithub.com/yangannyx) made their first contribution in [https://github.com/electron/forge/pull/3480](https://togithub.com/electron/forge/pull/3480)
-   [@&#8203;Dogdriip](https://togithub.com/Dogdriip) made their first contribution in [https://github.com/electron/forge/pull/3482](https://togithub.com/electron/forge/pull/3482)

**Full Changelog**: https://github.com/electron/forge/compare/v7.2.0...v7.3.0

</details>

<details>
<summary>napi-rs/napi-rs (@&#8203;napi-rs/cli)</summary>

### [`v3.0.0-alpha.41`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.41)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.40...@napi-rs/cli@3.0.0-alpha.41)

##### What's Changed

-   fix(cli): fallback to wasm32 if platform is not support by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1967](https://togithub.com/napi-rs/napi-rs/pull/1967)
-   fix(cli): allow more platform & arch fallback to wasm by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1969](https://togithub.com/napi-rs/napi-rs/pull/1969)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi@2.15.3...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.41

</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://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

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

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMDAuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIwMC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-23 08:39:35 +00:00
JimmFly
815ddd3778 chore: replace pricing plan link (#5886)
close TOV-609
2024-02-23 08:28:24 +00:00
Whitewater
9692a120a0 chore: filter out edgeless content from page preview (#5607)
Co-authored-by: EYHN <cneyhn@gmail.com>
2024-02-23 08:16:26 +00:00
Whitewater
228b0d789d feat: add shared page filter to all pages (#5540)
Co-authored-by: EYHN <cneyhn@gmail.com>
2024-02-23 16:07:13 +08:00
Peng Xiao
745110c799 fix: page info ui issue on journal page (#5887) 2024-02-23 07:55:44 +00:00
EYHN
3f7f78c8f4 fix(core): fix app boot speed (#5885) 2024-02-23 07:07:03 +00:00
Peng Xiao
7ec3f7a042 feat(core): add shortcut for openning settings (#5883)
fix https://github.com/toeverything/AFFiNE/issues/5881
2024-02-23 06:29:49 +00:00
Peng Xiao
bef72029a0 fix: keyboard shortcut style in cmdk (#5882)
![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/7eb2fa93-675a-43a6-8db4-9681fbbd1406.png)
2024-02-23 06:29:46 +00:00
JimmFly
4ea4a2d25f feat(core): support create cloud workspace (#5771)
close TOV-475

has not logged:

https://github.com/toeverything/AFFiNE/assets/102217452/b9aa2806-7dbd-4235-895d-5b27effb5831

 has logged :

https://github.com/toeverything/AFFiNE/assets/102217452/259a1c35-c6ab-4a52-9e03-4438ca64e620

client has not logged:

https://github.com/toeverything/AFFiNE/assets/102217452/af6ef528-6fb8-4a27-842f-00c9669afcb2
2024-02-23 06:18:25 +00:00
Peng Xiao
c22216c71a fix: fix image preview modal story (#5879) 2024-02-23 06:07:46 +00:00
Peng Xiao
0bbecec2fb fix(electron): add back bundle test for appimage (#5876)
In an attempt to fix AppImage build test, I incorrectly removed the script.
This PR add it back.
2024-02-23 04:36:15 +00:00
Peng Xiao
8b1d7219be chore(electron): bump @pengx17/electron-forge-maker-appimage to fix appimage build (#5875)
It looks like I did not publish the correct `@pengx17/electron-forge-maker-appimage`, which will result in failed build for AppImage
2024-02-23 04:36:06 +00:00
LongYinan
f58cb1085e chore: bump up chromatic version to v11 (#5877)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [chromatic](https://www.chromatic.com) ([source](https://togithub.com/chromaui/chromatic-cli)) | [`^10.0.0` -> `^11.0.0`](https://renovatebot.com/diffs/npm/chromatic/10.2.0/11.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/chromatic/11.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/chromatic/11.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/chromatic/10.2.0/11.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/chromatic/10.2.0/11.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>chromaui/chromatic-cli (chromatic)</summary>

### [`v11.0.0`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1100-Thu-Feb-22-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.9.6...v11.0.0)

##### 💥 Breaking Change

-   Add new invalid sb base dir error message and validator function [#&#8203;921](https://togithub.com/chromaui/chromatic-cli/pull/921) ([@&#8203;andrewortwein](https://togithub.com/andrewortwein) [@&#8203;ethriel3695](https://togithub.com/ethriel3695))

##### Authors: 2

-   Andrew Ortwein ([@&#8203;andrewortwein](https://togithub.com/andrewortwein))
-   Reuben Ellis ([@&#8203;ethriel3695](https://togithub.com/ethriel3695))

***

### [`v10.9.6`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1096-Fri-Feb-16-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.9.5...v10.9.6)

##### 🐛 Bug Fix

-   Avoid build verify timeout when waiting for upgrade builds [#&#8203;922](https://togithub.com/chromaui/chromatic-cli/pull/922) ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))

##### Authors: 1

-   Gert Hengeveld ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))

***

### [`v10.9.5`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1095-Wed-Feb-14-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.9.4...v10.9.5)

##### 🐛 Bug Fix

-   Fix Storybook published messaging [#&#8203;920](https://togithub.com/chromaui/chromatic-cli/pull/920) ([@&#8203;tevanoff](https://togithub.com/tevanoff))

##### Authors: 1

-   Todd Evanoff ([@&#8203;tevanoff](https://togithub.com/tevanoff))

***

### [`v10.9.4`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1094-Mon-Feb-12-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.9.3...v10.9.4)

##### 🐛 Bug Fix

-   Allow `traceChanged` in Chromatic config spec [#&#8203;916](https://togithub.com/chromaui/chromatic-cli/pull/916) ([@&#8203;tevanoff](https://togithub.com/tevanoff))

##### Authors: 1

-   Todd Evanoff ([@&#8203;tevanoff](https://togithub.com/tevanoff))

***

### [`v10.9.3`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1093-Fri-Feb-09-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.9.2...v10.9.3)

##### 🐛 Bug Fix

-   clean up debug log as it's too much noise [#&#8203;919](https://togithub.com/chromaui/chromatic-cli/pull/919) ([@&#8203;ethriel3695](https://togithub.com/ethriel3695))

##### Authors: 1

-   Reuben Ellis ([@&#8203;ethriel3695](https://togithub.com/ethriel3695))

***

### [`v10.9.2`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1092-Thu-Feb-08-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.9.1...v10.9.2)

##### 🐛 Bug Fix

-   Directly execute build-archive-storybook if we can't resolve it [#&#8203;917](https://togithub.com/chromaui/chromatic-cli/pull/917) ([@&#8203;tmeasday](https://togithub.com/tmeasday))

##### Authors: 1

-   Tom Coleman ([@&#8203;tmeasday](https://togithub.com/tmeasday))

***

### [`v10.9.1`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1091-Thu-Feb-08-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.9.0...v10.9.1)

##### 🐛 Bug Fix

-   Add missing `fileHashing` option to GitHub Action [#&#8203;918](https://togithub.com/chromaui/chromatic-cli/pull/918) ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))

##### Authors: 1

-   Gert Hengeveld ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))

***

### [`v10.9.0`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1090-Wed-Feb-07-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.8.0...v10.9.0)

##### 🚀 Enhancement

-   Be smarter about comparing lock files [#&#8203;912](https://togithub.com/chromaui/chromatic-cli/pull/912) ([@&#8203;ghengeveld](https://togithub.com/ghengeveld) [@&#8203;tmeasday](https://togithub.com/tmeasday))

##### Authors: 2

-   Gert Hengeveld ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))
-   Tom Coleman ([@&#8203;tmeasday](https://togithub.com/tmeasday))

***

### [`v10.8.0`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1080-Tue-Feb-06-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.7.1...v10.8.0)

##### 🚀 Enhancement

-   Expose `repositoryRootDir`, `configFile` and fix `diagnosticsFile` [#&#8203;913](https://togithub.com/chromaui/chromatic-cli/pull/913) ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))
-   Support `env`, `sessionId` and `log` options via Node API [#&#8203;897](https://togithub.com/chromaui/chromatic-cli/pull/897) ([@&#8203;work933k](https://togithub.com/work933k))
-   Add timestamps to debug and file logging [#&#8203;907](https://togithub.com/chromaui/chromatic-cli/pull/907) ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))

##### Authors: 2

-   [@&#8203;work933k](https://togithub.com/work933k)
-   Gert Hengeveld ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))

***

### [`v10.7.1`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1071-Fri-Feb-02-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.7.0...v10.7.1)

##### 🐛 Bug Fix

-   Add Fallback getGitInfo if we cannot find the origin URL [#&#8203;910](https://togithub.com/chromaui/chromatic-cli/pull/910) ([@&#8203;thafryer](https://togithub.com/thafryer))

##### Authors: 1

-   Jarel Fryer ([@&#8203;thafryer](https://togithub.com/thafryer))

***

### [`v10.7.0`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1070-Fri-Feb-02-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.6.1...v10.7.0)

##### 🚀 Enhancement

-   Rename E2E peer dependencies [#&#8203;909](https://togithub.com/chromaui/chromatic-cli/pull/909) ([@&#8203;tevanoff](https://togithub.com/tevanoff))

##### Authors: 1

-   Todd Evanoff ([@&#8203;tevanoff](https://togithub.com/tevanoff))

***

### [`v10.6.1`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1061-Fri-Jan-26-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.6.0...v10.6.1)

##### 🐛 Bug Fix

-   Remove after-release script [#&#8203;906](https://togithub.com/chromaui/chromatic-cli/pull/906) ([@&#8203;skitterm](https://togithub.com/skitterm))

##### Authors: 1

-   Steven Kitterman ([@&#8203;skitterm](https://togithub.com/skitterm))

***

### [`v10.6.0`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1060-Fri-Jan-26-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.5.2...v10.6.0)

##### 🚀 Enhancement

-   CLI should throw error when using TurboSnap but missing a stats file. [#&#8203;899](https://togithub.com/chromaui/chromatic-cli/pull/899) ([@&#8203;thafryer](https://togithub.com/thafryer))

##### Authors: 1

-   Jarel Fryer ([@&#8203;thafryer](https://togithub.com/thafryer))

***

### [`v10.5.2`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1052-Thu-Jan-25-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.5.1...v10.5.2)

##### 🐛 Bug Fix

-   Remove latest from the chromatic package in Init script [#&#8203;902](https://togithub.com/chromaui/chromatic-cli/pull/902) ([@&#8203;thafryer](https://togithub.com/thafryer))

##### Authors: 1

-   Jarel Fryer ([@&#8203;thafryer](https://togithub.com/thafryer))

***

### [`v10.5.1`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1051-Thu-Jan-25-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.5.0...v10.5.1)

##### 🐛 Bug Fix

-   Add "package.json" to exports map [#&#8203;900](https://togithub.com/chromaui/chromatic-cli/pull/900) ([@&#8203;yannbf](https://togithub.com/yannbf))
-   Improve logging around upload errors [#&#8203;894](https://togithub.com/chromaui/chromatic-cli/pull/894) ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))
-   Don't skip uploading of empty files, it works now [#&#8203;901](https://togithub.com/chromaui/chromatic-cli/pull/901) ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))

##### Authors: 2

-   Gert Hengeveld ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))
-   Yann Braga ([@&#8203;yannbf](https://togithub.com/yannbf))

***

### [`v10.5.0`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1050-Wed-Jan-24-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.4.0...v10.5.0)

##### 🚀 Enhancement

-   Add `--playwright` & `--cypress` flags [#&#8203;882](https://togithub.com/chromaui/chromatic-cli/pull/882) ([@&#8203;tmeasday](https://togithub.com/tmeasday))

##### Authors: 1

-   Tom Coleman ([@&#8203;tmeasday](https://togithub.com/tmeasday))

***

### [`v10.4.0`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1040-Tue-Jan-23-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.3.1...v10.4.0)

##### 🚀 Enhancement

-   Add new Init command for Project Setup [#&#8203;880](https://togithub.com/chromaui/chromatic-cli/pull/880) ([@&#8203;thafryer](https://togithub.com/thafryer))

##### Authors: 1

-   Jarel Fryer ([@&#8203;thafryer](https://togithub.com/thafryer))

***

### [`v10.3.1`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1031-Wed-Jan-17-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.3.0...v10.3.1)

##### 🐛 Bug Fix

-   Fix potential zip upload error when deduping files on a very large Storybook [#&#8203;892](https://togithub.com/chromaui/chromatic-cli/pull/892) ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))

##### Authors: 1

-   Gert Hengeveld ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))

***

### [`v10.3.0`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1030-Tue-Jan-16-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.2.2...v10.3.0)

##### 🚀 Enhancement

-   Add missing `skip` option to configuration schema [#&#8203;890](https://togithub.com/chromaui/chromatic-cli/pull/890) ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))
-   Detect merge queue branch and retrieve real branch name from pull request [#&#8203;884](https://togithub.com/chromaui/chromatic-cli/pull/884) ([@&#8203;JonathanKolnik](https://togithub.com/JonathanKolnik) [@&#8203;ghengeveld](https://togithub.com/ghengeveld))
-   Deduplicate files to be uploaded using file hashing [#&#8203;875](https://togithub.com/chromaui/chromatic-cli/pull/875) ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))
-   Replace upload mechanism to use a batched mutation with a new API [#&#8203;888](https://togithub.com/chromaui/chromatic-cli/pull/888) ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))

##### 🐛 Bug Fix

-   Retrieve `sentinelUrls` from `uploadBuild` and wait for all of them before finishing upload task [#&#8203;878](https://togithub.com/chromaui/chromatic-cli/pull/878) ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))

##### Authors: 2

-   Gert Hengeveld ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))
-   Jono Kolnik ([@&#8203;JonathanKolnik](https://togithub.com/JonathanKolnik))

***

### [`v10.2.2`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1022-Fri-Jan-12-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.2.1...v10.2.2)

##### 🐛 Bug Fix

-   Add configFile option to GitHub Action [#&#8203;885](https://togithub.com/chromaui/chromatic-cli/pull/885) ([@&#8203;wisestuart](https://togithub.com/wisestuart))

##### Authors: 1

-   Stuart Hammar ([@&#8203;wisestuart](https://togithub.com/wisestuart))

***

### [`v10.2.1`](https://togithub.com/chromaui/chromatic-cli/blob/HEAD/CHANGELOG.md#v1021-Wed-Jan-10-2024)

[Compare Source](https://togithub.com/chromaui/chromatic-cli/compare/v10.2.0...v10.2.1)

##### 🐛 Bug Fix

-   Revert "Replace `getUploadUrls` with `uploadBuild` mutation" [#&#8203;883](https://togithub.com/chromaui/chromatic-cli/pull/883) ([@&#8203;JonathanKolnik](https://togithub.com/JonathanKolnik))
-   Run publish-action script as afterShipIt hook [#&#8203;877](https://togithub.com/chromaui/chromatic-cli/pull/877) ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))

##### Authors: 2

-   Gert Hengeveld ([@&#8203;ghengeveld](https://togithub.com/ghengeveld))
-   Jono Kolnik ([@&#8203;JonathanKolnik](https://togithub.com/JonathanKolnik))

***

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMDAuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIwMC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-23 04:19:38 +00:00
LongYinan
ca2fc86902 ci: add AppImage bundle step to electron test (#5871)
Just ensure nothing breaks the AppImage bundle
2024-02-22 14:56:25 +00:00
LongYinan
a84460cc3a chore: remove swc plugin because it is too outdated (#5870) 2024-02-22 11:08:30 +00:00
LongYinan
c88998678e feat: add paragraph when clicking end area (#5869)
Close [TOV-442](https://linear.app/affine-design/issue/TOV-442/结尾是非编辑yuan素时,无法在最底部添加block)
2024-02-22 09:54:17 +00:00
Peng Xiao
2df8f29b64 refactor(core): use fractional indexing for sorting (#5809)
use https://github.com/rocicorp/fractional-indexing to enable better sorting logic for crdt app
2024-02-22 09:38:00 +00:00
Peng Xiao
372b4da884 test(core): add tests for page info ui (#5769)
![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/64419f79-46e8-4171-b853-5908841f827a.png)
2024-02-22 09:37:55 +00:00
Peng Xiao
bb8e601f82 feat(core): tags inline editor (#5748)
tags inline editor and some refactor

<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/T2klNLEk0wxLh4NRDzhk/439da1e3-30a9-462a-b7b4-c8e7c3b5ef17.mp4">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/T2klNLEk0wxLh4NRDzhk/439da1e3-30a9-462a-b7b4-c8e7c3b5ef17.mp4">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/439da1e3-30a9-462a-b7b4-c8e7c3b5ef17.mp4">Kapture 2024-01-31 at 23.29.11.mp4</video>

fix AFF-467
fix AFF-468
fix AFF-472
fix AFF-466
2024-02-22 09:37:50 +00:00
Peng Xiao
546d96c5c9 feat(core): workspace properties setting (#5739)
the property settings in workspace settings
2024-02-22 09:37:46 +00:00
Ayush Agrawal
55b8082d3a chore: bump blocksuite (#5868)
Co-authored-by: LongYinan <lynweklm@gmail.com>
2024-02-22 17:11:10 +08:00
LongYinan
35842ae1c5 fix(core): fix 404 after signout (#5866)
CherryPick https://github.com/toeverything/AFFiNE/pull/5865
2024-02-22 08:30:41 +00:00
Cats Juice
390fb90a8b feat(core): ignore empty journal for global useBlockSuitePageMeta hook (#5715)
[TOV-494](https://linear.app/affine-design/issue/TOV-494/空-journal-的隐藏处理)
2024-02-22 08:09:33 +00:00
EYHN
0fff5588e6 fix(core): disable sidebar user select (#5862)
close #5846
2024-02-22 07:58:14 +00:00
liuyi
4d421a324f refactor(server): import prisma from @prisma/client (#5863) 2024-02-22 07:46:57 +00:00
Umar Faiz
f2c5786dd0 fix(core): the pitch zooming function incorrectly zooms the toolbar (#5456)
Co-authored-by: LongYinan <lynweklm@gmail.com>
2024-02-22 15:04:33 +08:00
Peng Xiao
58ea2fbc4c fix(core): editor container grow to full height (#5743) 2024-02-22 06:20:40 +00:00
Peng Xiao
a120eb90ab fix(core): journal display on cmdk (#5723)
![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/01d2c2ec-cfdd-4c90-9616-606e4a473cc0.png)
2024-02-22 06:09:18 +00:00
Peng Xiao
d97304e9eb feat(core): page info ui (#5729)
this PR includes the main table view in the page detail page
2024-02-22 05:58:15 +00:00
L-Sun
46cc0810e9 test(server): incorrect prisma overriding (#5857) 2024-02-22 11:55:37 +08:00
Ayush Agrawal
a01f0d86a5 fix: css style should not apply on nested editor's viewport (#5859) 2024-02-22 10:46:16 +08:00
Cats Juice
67dffc2a5a feat(component): remove react-datepicker (#5681) 2024-02-21 13:09:44 +00:00
JimmFly
8d746f17de chore: remove preloading pages (#5854) 2024-02-21 12:57:18 +00:00
JimmFly
c353b0d30f chore: replace ambiguous "page" with "doc" (#5761)
close TOV-532
2024-02-21 12:47:17 +00:00
liuyi
85be45a79c fix(core): window.open to a new origin will be blocked by browser (#5856) 2024-02-21 12:35:25 +00:00
LongYinan
4a7f0a6142 chore: bump up all non-major dependencies (#5793)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@aws-sdk/client-s3](https://togithub.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3) ([source](https://togithub.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3)) | [`3.504.0` -> `3.515.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.504.0/3.515.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.515.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.515.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.504.0/3.515.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.504.0/3.515.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@graphql-codegen/cli](https://togithub.com/dotansimha/graphql-code-generator) ([source](https://togithub.com/dotansimha/graphql-code-generator/tree/HEAD/packages/graphql-codegen-cli)) | [`5.0.0` -> `5.0.2`](https://renovatebot.com/diffs/npm/@graphql-codegen%2fcli/5.0.0/5.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-codegen%2fcli/5.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-codegen%2fcli/5.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-codegen%2fcli/5.0.0/5.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-codegen%2fcli/5.0.0/5.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@napi-rs/cli](https://togithub.com/napi-rs/napi-rs) | [`3.0.0-alpha.36` -> `3.0.0-alpha.40`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.0.0-alpha.36/3.0.0-alpha.40) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@napi-rs%2fcli/3.0.0-alpha.40?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@napi-rs%2fcli/3.0.0-alpha.40?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@napi-rs%2fcli/3.0.0-alpha.36/3.0.0-alpha.40?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@napi-rs%2fcli/3.0.0-alpha.36/3.0.0-alpha.40?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@vitest/coverage-istanbul](https://togithub.com/vitest-dev/vitest/tree/main/packages/coverage-istanbul#readme) ([source](https://togithub.com/vitest-dev/vitest/tree/HEAD/packages/coverage-istanbul)) | [`1.2.2` -> `1.3.1`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-istanbul/1.2.2/1.3.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fcoverage-istanbul/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fcoverage-istanbul/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fcoverage-istanbul/1.2.2/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fcoverage-istanbul/1.2.2/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@vitest/ui](https://togithub.com/vitest-dev/vitest/tree/main/packages/ui#readme) ([source](https://togithub.com/vitest-dev/vitest/tree/HEAD/packages/ui)) | [`1.2.2` -> `1.3.1`](https://renovatebot.com/diffs/npm/@vitest%2fui/1.2.2/1.3.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fui/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fui/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fui/1.2.2/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fui/1.2.2/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [eslint-plugin-sonarjs](https://togithub.com/SonarSource/eslint-plugin-sonarjs) | [`^0.23.0` -> `^0.24.0`](https://renovatebot.com/diffs/npm/eslint-plugin-sonarjs/0.23.0/0.24.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-sonarjs/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-sonarjs/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-sonarjs/0.23.0/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-sonarjs/0.23.0/0.24.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [jotai-devtools](https://togithub.com/jotaijs/jotai-devtools) | [`^0.7.0` -> `^0.8.0`](https://renovatebot.com/diffs/npm/jotai-devtools/0.7.0/0.8.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jotai-devtools/0.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jotai-devtools/0.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jotai-devtools/0.7.0/0.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jotai-devtools/0.7.0/0.8.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [swr](https://swr.vercel.app) ([source](https://togithub.com/vercel/swr)) | [`2.2.4` -> `2.2.5`](https://renovatebot.com/diffs/npm/swr/2.2.4/2.2.5) | [![age](https://developer.mend.io/api/mc/badges/age/npm/swr/2.2.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/swr/2.2.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/swr/2.2.4/2.2.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/swr/2.2.4/2.2.5?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [vite-plugin-dts](https://togithub.com/qmhc/vite-plugin-dts) | [`3.7.2` -> `3.7.3`](https://renovatebot.com/diffs/npm/vite-plugin-dts/3.7.2/3.7.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vite-plugin-dts/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite-plugin-dts/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite-plugin-dts/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite-plugin-dts/3.7.2/3.7.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [vitest](https://togithub.com/vitest-dev/vitest) ([source](https://togithub.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`1.2.2` -> `1.3.1`](https://renovatebot.com/diffs/npm/vitest/1.2.2/1.3.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/1.2.2/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/1.2.2/1.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>aws/aws-sdk-js-v3 (@&#8203;aws-sdk/client-s3)</summary>

### [`v3.515.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35150-2024-02-15)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.514.0...v3.515.0)

**Note:** Version bump only for package [@&#8203;aws-sdk/client-s3](https://togithub.com/aws-sdk/client-s3)

### [`v3.514.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35140-2024-02-14)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.513.0...v3.514.0)

**Note:** Version bump only for package [@&#8203;aws-sdk/client-s3](https://togithub.com/aws-sdk/client-s3)

### [`v3.513.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35130-2024-02-13)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.511.0...v3.513.0)

##### Features

-   **experimentalIdentityAndAuth:** release phase for services without customizations ([#&#8203;5787](https://togithub.com/aws/aws-sdk-js-v3/issues/5787)) ([4004ff6](4004ff68a8))

### [`v3.511.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35110-2024-02-09)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.509.0...v3.511.0)

**Note:** Version bump only for package [@&#8203;aws-sdk/client-s3](https://togithub.com/aws-sdk/client-s3)

### [`v3.509.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35090-2024-02-07)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.507.0...v3.509.0)

**Note:** Version bump only for package [@&#8203;aws-sdk/client-s3](https://togithub.com/aws-sdk/client-s3)

### [`v3.507.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35070-2024-02-05)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.504.0...v3.507.0)

##### Features

-   unified error dispatcher in protocols ([#&#8203;5756](https://togithub.com/aws/aws-sdk-js-v3/issues/5756)) ([0872087](0872087ef5))

</details>

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

### [`v5.0.2`](https://togithub.com/dotansimha/graphql-code-generator/blob/HEAD/packages/graphql-codegen-cli/CHANGELOG.md#502)

[Compare Source](86c82177b0...@graphql-codegen/cli@5.0.2)

##### Patch Changes

-   [#&#8203;9813](https://togithub.com/dotansimha/graphql-code-generator/pull/9813) [`4e69568`](4e6956899c) Thanks [@&#8203;saihaj](https://togithub.com/saihaj)! - bumping for a release

-   Updated dependencies \[[`4e69568`](4e6956899c)]:
    -   [@&#8203;graphql-codegen/client-preset](https://togithub.com/graphql-codegen/client-preset)[@&#8203;4](https://togithub.com/4).2.2
    -   [@&#8203;graphql-codegen/core](https://togithub.com/graphql-codegen/core)[@&#8203;4](https://togithub.com/4).0.2
    -   [@&#8203;graphql-codegen/plugin-helpers](https://togithub.com/graphql-codegen/plugin-helpers)[@&#8203;5](https://togithub.com/5).0.3

### [`v5.0.1`](https://togithub.com/dotansimha/graphql-code-generator/blob/HEAD/packages/graphql-codegen-cli/CHANGELOG.md#501)

[Compare Source](https://togithub.com/dotansimha/graphql-code-generator/compare/@graphql-codegen/cli@5.0.0...86c82177b0b9ab1853f6c4e6fba17218dafa3d7d)

##### Patch Changes

-   [#&#8203;9811](https://togithub.com/dotansimha/graphql-code-generator/pull/9811) [`d8364e045`](d8364e045a) Thanks [@&#8203;saihaj](https://togithub.com/saihaj)! - dependencies updates:

    -   Added dependency [`@graphql-codegen/client-preset@^4.1.0` ↗︎](https://www.npmjs.com/package/@&#8203;graphql-codegen/client-preset/v/4.1.0) (to `dependencies`)

-   [#&#8203;9811](https://togithub.com/dotansimha/graphql-code-generator/pull/9811) [`d8364e045`](d8364e045a) Thanks [@&#8203;saihaj](https://togithub.com/saihaj)! - ignore events in `.git` directory

-   [#&#8203;9811](https://togithub.com/dotansimha/graphql-code-generator/pull/9811) [`d8364e045`](d8364e045a) Thanks [@&#8203;saihaj](https://togithub.com/saihaj)! - Surface error occurring during import of [@&#8203;parcel/watcher](https://togithub.com/parcel/watcher)

-   [#&#8203;9811](https://togithub.com/dotansimha/graphql-code-generator/pull/9811) [`d8364e045`](d8364e045a) Thanks [@&#8203;saihaj](https://togithub.com/saihaj)! - Include [@&#8203;graphql-codegen/client-preset](https://togithub.com/graphql-codegen/client-preset) in [@&#8203;graphql-codegen/cli](https://togithub.com/graphql-codegen/cli) by default

-   [#&#8203;9811](https://togithub.com/dotansimha/graphql-code-generator/pull/9811) [`d8364e045`](d8364e045a) Thanks [@&#8203;saihaj](https://togithub.com/saihaj)! - fix watcher unable to find highest common directory on Windows

-   Updated dependencies \[[`d8364e045`](d8364e045a), [`d8364e045`](d8364e045a), [`d8364e045`](d8364e045a), [`d8364e045`](d8364e045a)]:
    -   [@&#8203;graphql-codegen/client-preset](https://togithub.com/graphql-codegen/client-preset)[@&#8203;4](https://togithub.com/4).2.0
    -   [@&#8203;graphql-codegen/core](https://togithub.com/graphql-codegen/core)[@&#8203;4](https://togithub.com/4).0.1
    -   [@&#8203;graphql-codegen/plugin-helpers](https://togithub.com/graphql-codegen/plugin-helpers)[@&#8203;5](https://togithub.com/5).0.2

</details>

<details>
<summary>napi-rs/napi-rs (@&#8203;napi-rs/cli)</summary>

### [`v3.0.0-alpha.40`](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.39...@napi-rs/cli@3.0.0-alpha.40)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.39...@napi-rs/cli@3.0.0-alpha.40)

### [`v3.0.0-alpha.39`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.39)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.38...@napi-rs/cli@3.0.0-alpha.39)

#### What's Changed

-   chore(deps): update typescript-eslint monorepo to v7 (major) by [@&#8203;renovate](https://togithub.com/renovate) in [https://github.com/napi-rs/napi-rs/pull/1947](https://togithub.com/napi-rs/napi-rs/pull/1947)
-   Ensure cwd and outputDir are used for finding files by [@&#8203;andymac4182](https://togithub.com/andymac4182) in [https://github.com/napi-rs/napi-rs/pull/1949](https://togithub.com/napi-rs/napi-rs/pull/1949)
-   fix(cli): set cxxflags while WASI_SDK_PATH exists by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1955](https://togithub.com/napi-rs/napi-rs/pull/1955)
-   feat(cli,build): support setjmp.h by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1958](https://togithub.com/napi-rs/napi-rs/pull/1958)

#### New Contributors

-   [@&#8203;andymac4182](https://togithub.com/andymac4182) made their first contribution in [https://github.com/napi-rs/napi-rs/pull/1949](https://togithub.com/napi-rs/napi-rs/pull/1949)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.38...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.39

### [`v3.0.0-alpha.38`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.38)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.37...@napi-rs/cli@3.0.0-alpha.38)

##### What's Changed

-   feat(cli): respect WASI_SDK_PATH env by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1946](https://togithub.com/napi-rs/napi-rs/pull/1946)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.37...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.38

### [`v3.0.0-alpha.37`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.37)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.36...@napi-rs/cli@3.0.0-alpha.37)

##### What's Changed

-   fix(cli): setup cxx env while using napi-cross by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1942](https://togithub.com/napi-rs/napi-rs/pull/1942)
-   fix(cli): log more wasi load errors by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1943](https://togithub.com/napi-rs/napi-rs/pull/1943)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/napi-derive@2.15.1...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.37

</details>

<details>
<summary>vitest-dev/vitest (@&#8203;vitest/coverage-istanbul)</summary>

### [`v1.3.1`](https://togithub.com/vitest-dev/vitest/releases/tag/v1.3.1)

[Compare Source](https://togithub.com/vitest-dev/vitest/compare/v1.3.0...v1.3.1)

#####    🚀 Features

-   **vitest**: Expose parseCLI method  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5248](https://togithub.com/vitest-dev/vitest/issues/5248) [<samp>(c793a)</samp>](https://togithub.com/vitest-dev/vitest/commit/c793a136)
    -   This feature is not affected by SemVer because it is part of an [experimental API](https://vitest.dev/advanced/api.html).

#####    🐞 Bug Fixes

-   Add task tests iteratively  -  by [@&#8203;DerYeger](https://togithub.com/DerYeger) in [https://github.com/vitest-dev/vitest/issues/5235](https://togithub.com/vitest-dev/vitest/issues/5235) [<samp>(38155)</samp>](https://togithub.com/vitest-dev/vitest/commit/38155548)
-   **coverage**: Ignore generated TS decorators  -  by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) and [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5206](https://togithub.com/vitest-dev/vitest/issues/5206) [<samp>(a2804)</samp>](https://togithub.com/vitest-dev/vitest/commit/a280451b)
-   **ui**: Auto reload coverage iframe after test run  -  by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5242](https://togithub.com/vitest-dev/vitest/issues/5242) [<samp>(5376d)</samp>](https://togithub.com/vitest-dev/vitest/commit/5376d5be)

#####     [View changes on GitHub](https://togithub.com/vitest-dev/vitest/compare/v1.3.0...v1.3.1)

### [`v1.3.0`](https://togithub.com/vitest-dev/vitest/releases/tag/v1.3.0)

[Compare Source](https://togithub.com/vitest-dev/vitest/compare/v1.2.2...v1.3.0)

##### 🚀 Features

-   Deprecate watchExclude - by [@&#8203;patak-dev](https://togithub.com/patak-dev) in [https://github.com/vitest-dev/vitest/issues/5171](https://togithub.com/vitest-dev/vitest/issues/5171) [<samp>(82885)</samp>](https://togithub.com/vitest-dev/vitest/commit/828858f8)
-   **browser**:
    -   Run test files in isolated iframes - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5036](https://togithub.com/vitest-dev/vitest/issues/5036) [<samp>(4f401)</samp>](https://togithub.com/vitest-dev/vitest/commit/4f40177e)
-   **config**:
    -   Add `snapshotSerializers` option - by [@&#8203;fenghan34](https://togithub.com/fenghan34) in [https://github.com/vitest-dev/vitest/issues/5092](https://togithub.com/vitest-dev/vitest/issues/5092) [<samp>(5b102)</samp>](https://togithub.com/vitest-dev/vitest/commit/5b1021da)
-   **reporters**:
    -   Support custom options - by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5111](https://togithub.com/vitest-dev/vitest/issues/5111) [<samp>(fec9c)</samp>](https://togithub.com/vitest-dev/vitest/commit/fec9ca0b)
-   **runner**:
    -   Support automatic fixtures - by [@&#8203;fenghan34](https://togithub.com/fenghan34) and [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5102](https://togithub.com/vitest-dev/vitest/issues/5102) [<samp>(0441f)</samp>](https://togithub.com/vitest-dev/vitest/commit/0441f761)
-   **ui**:
    -   Save splitpanes size to local storage - by [@&#8203;posva](https://togithub.com/posva) in [https://github.com/vitest-dev/vitest/issues/5166](https://togithub.com/vitest-dev/vitest/issues/5166) [<samp>(c28b4)</samp>](https://togithub.com/vitest-dev/vitest/commit/c28b4c26)
-   **vitest**:
    -   Add onTestFinished hook - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5128](https://togithub.com/vitest-dev/vitest/issues/5128) [<samp>(6f5b4)</samp>](https://togithub.com/vitest-dev/vitest/commit/6f5b42b7)
    -   Add github actions reporter - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5093](https://togithub.com/vitest-dev/vitest/issues/5093) [<samp>(40afb)</samp>](https://togithub.com/vitest-dev/vitest/commit/40afbe3a)
    -   Expose jsdom global if jsdom environment is enabled - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5155](https://togithub.com/vitest-dev/vitest/issues/5155) [<samp>(567d2)</samp>](https://togithub.com/vitest-dev/vitest/commit/567d20b9)
    -   Add new CLI options - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5163](https://togithub.com/vitest-dev/vitest/issues/5163) [<samp>(4e179)</samp>](https://togithub.com/vitest-dev/vitest/commit/4e179426)
    -   "test" accepts options object as the second parameter - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5142](https://togithub.com/vitest-dev/vitest/issues/5142) [<samp>(7d9b1)</samp>](https://togithub.com/vitest-dev/vitest/commit/7d9b1fb0)
-   **vm**:
    -   Support wasm module - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5131](https://togithub.com/vitest-dev/vitest/issues/5131) [<samp>(5ed53)</samp>](https://togithub.com/vitest-dev/vitest/commit/5ed537f0)

##### 🐞 Bug Fixes

-   Fix sourcemap in vm pools - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5063](https://togithub.com/vitest-dev/vitest/issues/5063) [<samp>(81105)</samp>](https://togithub.com/vitest-dev/vitest/commit/8110540a)
-   Don't optimize react/jsx-runtime by default when running in Node - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5079](https://togithub.com/vitest-dev/vitest/issues/5079) [<samp>(0d2bf)</samp>](https://togithub.com/vitest-dev/vitest/commit/0d2bfeac)
-   Rpc timeout error messages to include caller - by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5103](https://togithub.com/vitest-dev/vitest/issues/5103) [<samp>(a6e04)</samp>](https://togithub.com/vitest-dev/vitest/commit/a6e04bd8)
-   Requires fixed version across the monorepo - by [@&#8203;antfu](https://togithub.com/antfu) in [https://github.com/vitest-dev/vitest/issues/5208](https://togithub.com/vitest-dev/vitest/issues/5208) [<samp>(68f51)</samp>](https://togithub.com/vitest-dev/vitest/commit/68f51961)
-   Prevent merging of `poolOptions` - by [@&#8203;penalosa](https://togithub.com/penalosa) in [https://github.com/vitest-dev/vitest/issues/5221](https://togithub.com/vitest-dev/vitest/issues/5221) [<samp>(bc5b2)</samp>](https://togithub.com/vitest-dev/vitest/commit/bc5b2d04)
-   **browser**:
    -   Don't exclude node builtins from optimization - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5082](https://togithub.com/vitest-dev/vitest/issues/5082) [<samp>(714c9)</samp>](https://togithub.com/vitest-dev/vitest/commit/714c911f)
    -   Support `coverage.reportsDirectory` with multiple directories - by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5056](https://togithub.com/vitest-dev/vitest/issues/5056) [<samp>(ae73f)</samp>](https://togithub.com/vitest-dev/vitest/commit/ae73f273)
-   **cli**:
    -   Parse `--browser=<name>` correctly - by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5179](https://togithub.com/vitest-dev/vitest/issues/5179) [<samp>(656e2)</samp>](https://togithub.com/vitest-dev/vitest/commit/656e210b)
-   **coverage**:
    -   `.tmp` directory conflicts with `--shard` option - by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5184](https://togithub.com/vitest-dev/vitest/issues/5184) [<samp>(5749d)</samp>](https://togithub.com/vitest-dev/vitest/commit/5749d2c2)
-   **deps**:
    -   Update dependency strip-literal to v2 - by [@&#8203;renovate](https://togithub.com/renovate)\[bot] in[https://github.com/vitest-dev/vitest/issues/5136](https://togithub.com/vitest-dev/vitest/issues/5136)6 [<samp>(ef557)</samp>](https://togithub.com/vitest-dev/vitest/commit/ef557243)
-   **reporters**:
    -   Testsuite name should include project root in Junit output - by [@&#8203;fenghan34](https://togithub.com/fenghan34) in [https://github.com/vitest-dev/vitest/issues/5116](https://togithub.com/vitest-dev/vitest/issues/5116) [<samp>(2494f)</samp>](https://togithub.com/vitest-dev/vitest/commit/2494fbf2)
-   **typecheck**:
    -   Fix suite collection while-loop - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5065](https://togithub.com/vitest-dev/vitest/issues/5065) [<samp>(35675)</samp>](https://togithub.com/vitest-dev/vitest/commit/35675bd3)
-   **ui**:
    -   Fix tests duration time - by [@&#8203;vovsemenv](https://togithub.com/vovsemenv) in [https://github.com/vitest-dev/vitest/issues/5219](https://togithub.com/vitest-dev/vitest/issues/5219) [<samp>(58103)</samp>](https://togithub.com/vitest-dev/vitest/commit/581030ee)
-   **utils**:
    -   Fix asymmetric matcher diff inside array - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5189](https://togithub.com/vitest-dev/vitest/issues/5189) [<samp>(3ffcd)</samp>](https://togithub.com/vitest-dev/vitest/commit/3ffcd2ea)
-   **vitest**:
    -   Correctly report failed test files as failures in json reporter, export json reporter types - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5081](https://togithub.com/vitest-dev/vitest/issues/5081) [<samp>(0417b)</samp>](https://togithub.com/vitest-dev/vitest/commit/0417ba20)
    -   Don't run typecheck tests in browser if both are enabled - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5080](https://togithub.com/vitest-dev/vitest/issues/5080) [<samp>(1045b)</samp>](https://togithub.com/vitest-dev/vitest/commit/1045b98b)
    -   Handle function config inside `defineWorkspace` - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5089](https://togithub.com/vitest-dev/vitest/issues/5089) [<samp>(0bf52)</samp>](https://togithub.com/vitest-dev/vitest/commit/0bf52533)
    -   Remove excessive listeners when running without isolation, don't reset the state - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5132](https://togithub.com/vitest-dev/vitest/issues/5132) [<samp>(b607f)</samp>](https://togithub.com/vitest-dev/vitest/commit/b607f1ea)
    -   Auto-enable "github-actions" only where users didn't configure reporters - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5158](https://togithub.com/vitest-dev/vitest/issues/5158) [<samp>(ef044)</samp>](https://togithub.com/vitest-dev/vitest/commit/ef0440cb)
    -   Support more array cli options - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5162](https://togithub.com/vitest-dev/vitest/issues/5162) [<samp>(3afe6)</samp>](https://togithub.com/vitest-dev/vitest/commit/3afe68f1)
    -   Add types for the new global `jsdom` variable - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5164](https://togithub.com/vitest-dev/vitest/issues/5164) [<samp>(0f898)</samp>](https://togithub.com/vitest-dev/vitest/commit/0f898d87)
    -   Expose onTestFinished globally - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) [<samp>(1304f)</samp>](https://togithub.com/vitest-dev/vitest/commit/1304fed7)
    -   Disable optimizer by default until it's stable - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5156](https://togithub.com/vitest-dev/vitest/issues/5156) [<samp>(e1bd8)</samp>](https://togithub.com/vitest-dev/vitest/commit/e1bd8d5d)
    -   Delegate snapshot options to workspace from root config - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5199](https://togithub.com/vitest-dev/vitest/issues/5199) [<samp>(86297)</samp>](https://togithub.com/vitest-dev/vitest/commit/86297d42)
    -   Fix `optimizeDeps.disabled` warnings on Vite 5.1 - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5215](https://togithub.com/vitest-dev/vitest/issues/5215) [<samp>(1aecd)</samp>](https://togithub.com/vitest-dev/vitest/commit/1aecd650)
-   **vm**:
    -   Handle `disableConsoleIntercept` config - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5074](https://togithub.com/vitest-dev/vitest/issues/5074) [<samp>(a55ad)</samp>](https://togithub.com/vitest-dev/vitest/commit/a55adac6)
    -   Improve error when module is not found - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5053](https://togithub.com/vitest-dev/vitest/issues/5053) [<samp>(79a50)</samp>](https://togithub.com/vitest-dev/vitest/commit/79a50c3f)

##### [View changes on GitHub](https://togithub.com/vitest-dev/vitest/compare/v1.2.2...v1.3.0)

</details>

<details>
<summary>SonarSource/eslint-plugin-sonarjs (eslint-plugin-sonarjs)</summary>

### [`v0.24.0`](https://togithub.com/SonarSource/eslint-plugin-sonarjs/releases/tag/0.24.0)

[Compare Source](https://togithub.com/SonarSource/eslint-plugin-sonarjs/compare/0.23.0...0.24.0)

#### What's Changed

-   Prepare for next development iteration by [@&#8203;yassin-kammoun-sonarsource](https://togithub.com/yassin-kammoun-sonarsource) in [https://github.com/SonarSource/eslint-plugin-sonarjs/pull/429](https://togithub.com/SonarSource/eslint-plugin-sonarjs/pull/429)
-   Add prettier as pre-commit hook by [@&#8203;vdiez](https://togithub.com/vdiez) in [https://github.com/SonarSource/eslint-plugin-sonarjs/pull/432](https://togithub.com/SonarSource/eslint-plugin-sonarjs/pull/432)
-   Fix cognitive complexity link by [@&#8203;ilia-kebets-sonarsource](https://togithub.com/ilia-kebets-sonarsource) in [https://github.com/SonarSource/eslint-plugin-sonarjs/pull/443](https://togithub.com/SonarSource/eslint-plugin-sonarjs/pull/443)
-   Drop Node.js 14 support and test against Node.js 20 on CI by [@&#8203;yassin-kammoun-sonarsource](https://togithub.com/yassin-kammoun-sonarsource) in [https://github.com/SonarSource/eslint-plugin-sonarjs/pull/445](https://togithub.com/SonarSource/eslint-plugin-sonarjs/pull/445)
-   Fix FP S3776 (`cognitive-complexity`): Ignore nested functions and default values by [@&#8203;yassin-kammoun-sonarsource](https://togithub.com/yassin-kammoun-sonarsource) in [https://github.com/SonarSource/eslint-plugin-sonarjs/pull/444](https://togithub.com/SonarSource/eslint-plugin-sonarjs/pull/444)

**Full Changelog**: https://github.com/SonarSource/eslint-plugin-sonarjs/compare/0.23.0...0.24.0

</details>

<details>
<summary>jotaijs/jotai-devtools (jotai-devtools)</summary>

### [`v0.8.0`](https://togithub.com/jotaijs/jotai-devtools/blob/HEAD/CHANGELOG.md#080-2024-02-20)

[Compare Source](https://togithub.com/jotaijs/jotai-devtools/compare/v0.7.1...v0.8.0)

##### Features

-   add position option
    ([#&#8203;118](https://togithub.com/jotaijs/jotai-devtools/issues/118))
    ([9db1951](9db195108c))

### [`v0.7.1`](https://togithub.com/jotaijs/jotai-devtools/blob/HEAD/CHANGELOG.md#071-2023-12-04)

[Compare Source](https://togithub.com/jotaijs/jotai-devtools/compare/v0.7.0...v0.7.1)

##### Bug Fixes

-   defer setAtom in subscribers of store change during main render to next micro
    task ([#&#8203;109](https://togithub.com/jotaijs/jotai-devtools/issues/109))
    ([2cdc81d](2cdc81d834))

</details>

<details>
<summary>vercel/swr (swr)</summary>

### [`v2.2.5`](https://togithub.com/vercel/swr/releases/tag/v2.2.5)

[Compare Source](https://togithub.com/vercel/swr/compare/v2.2.4...v2.2.5)

##### Patches

-   types: isLoading typed as boolean when using fallbackData ([#&#8203;2866](https://togithub.com/vercel/swr/issues/2866)) by [@&#8203;yjrhgvbn](https://togithub.com/yjrhgvbn) in [https://github.com/vercel/swr/pull/2875](https://togithub.com/vercel/swr/pull/2875)
-   fix: allow onErrorRetry on inactive tab without focus/reconnect revalidation by [@&#8203;qkdreyer](https://togithub.com/qkdreyer) in [https://github.com/vercel/swr/pull/2848](https://togithub.com/vercel/swr/pull/2848)
-   feat: pass a function to the revalidate option in mutate by [@&#8203;koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2862](https://togithub.com/vercel/swr/pull/2862)
-   fix: SWRConfiguration type by [@&#8203;hulla-dev](https://togithub.com/hulla-dev) in [https://github.com/vercel/swr/pull/2882](https://togithub.com/vercel/swr/pull/2882)

##### Misc

-   build: use new bundle convention by [@&#8203;huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2865](https://togithub.com/vercel/swr/pull/2865)
-   chore: update pnpm-lock.yaml by [@&#8203;koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2874](https://togithub.com/vercel/swr/pull/2874)
-   chore: remove useless comment by [@&#8203;kongmoumou](https://togithub.com/kongmoumou) in [https://github.com/vercel/swr/pull/2868](https://togithub.com/vercel/swr/pull/2868)
-   test: run pnpm test on CI by [@&#8203;koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2872](https://togithub.com/vercel/swr/pull/2872)
-   fix: all act warnings by [@&#8203;koba04](https://togithub.com/koba04) in [https://github.com/vercel/swr/pull/2861](https://togithub.com/vercel/swr/pull/2861)
-   Update bundler by [@&#8203;huozhi](https://togithub.com/huozhi) in [https://github.com/vercel/swr/pull/2830](https://togithub.com/vercel/swr/pull/2830)

##### New Contributors

-   [@&#8203;kongmoumou](https://togithub.com/kongmoumou) made their first contribution in [https://github.com/vercel/swr/pull/2868](https://togithub.com/vercel/swr/pull/2868)
-   [@&#8203;yjrhgvbn](https://togithub.com/yjrhgvbn) made their first contribution in [https://github.com/vercel/swr/pull/2875](https://togithub.com/vercel/swr/pull/2875)
-   [@&#8203;qkdreyer](https://togithub.com/qkdreyer) made their first contribution in [https://github.com/vercel/swr/pull/2848](https://togithub.com/vercel/swr/pull/2848)
-   [@&#8203;hulla-dev](https://togithub.com/hulla-dev) made their first contribution in [https://github.com/vercel/swr/pull/2882](https://togithub.com/vercel/swr/pull/2882)

**Full Changelog**: https://github.com/vercel/swr/compare/v2.2.4...v2.2.5

</details>

<details>
<summary>qmhc/vite-plugin-dts (vite-plugin-dts)</summary>

### [`v3.7.3`](https://togithub.com/qmhc/vite-plugin-dts/blob/HEAD/CHANGELOG.md#373-2024-02-21)

[Compare Source](https://togithub.com/qmhc/vite-plugin-dts/compare/v3.7.2...v3.7.3)

##### Bug Fixes

-   incorrect process for removing pure import ([d0c0c86](d0c0c867d6)), closes [#&#8203;301](https://togithub.com/qmhc/vite-plugin-dts/issues/301)

</details>

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

### [`v1.3.1`](https://togithub.com/vitest-dev/vitest/compare/v1.3.0...v1.3.1)

[Compare Source](https://togithub.com/vitest-dev/vitest/compare/v1.3.0...v1.3.1)

### [`v1.3.0`](https://togithub.com/vitest-dev/vitest/releases/tag/v1.3.0)

[Compare Source](https://togithub.com/vitest-dev/vitest/compare/v1.2.2...v1.3.0)

##### 🚀 Features

-   Deprecate watchExclude - by [@&#8203;patak-dev](https://togithub.com/patak-dev) in [https://github.com/vitest-dev/vitest/issues/5171](https://togithub.com/vitest-dev/vitest/issues/5171) [<samp>(82885)</samp>](https://togithub.com/vitest-dev/vitest/commit/828858f8)
-   **browser**:
    -   Run test files in isolated iframes - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5036](https://togithub.com/vitest-dev/vitest/issues/5036) [<samp>(4f401)</samp>](https://togithub.com/vitest-dev/vitest/commit/4f40177e)
-   **config**:
    -   Add `snapshotSerializers` option - by [@&#8203;fenghan34](https://togithub.com/fenghan34) in [https://github.com/vitest-dev/vitest/issues/5092](https://togithub.com/vitest-dev/vitest/issues/5092) [<samp>(5b102)</samp>](https://togithub.com/vitest-dev/vitest/commit/5b1021da)
-   **reporters**:
    -   Support custom options - by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5111](https://togithub.com/vitest-dev/vitest/issues/5111) [<samp>(fec9c)</samp>](https://togithub.com/vitest-dev/vitest/commit/fec9ca0b)
-   **runner**:
    -   Support automatic fixtures - by [@&#8203;fenghan34](https://togithub.com/fenghan34) and [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5102](https://togithub.com/vitest-dev/vitest/issues/5102) [<samp>(0441f)</samp>](https://togithub.com/vitest-dev/vitest/commit/0441f761)
-   **ui**:
    -   Save splitpanes size to local storage - by [@&#8203;posva](https://togithub.com/posva) in [https://github.com/vitest-dev/vitest/issues/5166](https://togithub.com/vitest-dev/vitest/issues/5166) [<samp>(c28b4)</samp>](https://togithub.com/vitest-dev/vitest/commit/c28b4c26)
-   **vitest**:
    -   Add onTestFinished hook - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5128](https://togithub.com/vitest-dev/vitest/issues/5128) [<samp>(6f5b4)</samp>](https://togithub.com/vitest-dev/vitest/commit/6f5b42b7)
    -   Add github actions reporter - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5093](https://togithub.com/vitest-dev/vitest/issues/5093) [<samp>(40afb)</samp>](https://togithub.com/vitest-dev/vitest/commit/40afbe3a)
    -   Expose jsdom global if jsdom environment is enabled - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5](https://togithub.com/vitest-dev/vitest/issues/5)[15](https://togithub.com/vitest-dev/vitest/actions/runs/7934052979/job/21664152574#step:8:16)5 [<samp>(567d2)</samp>](https://togithub.com/vitest-dev/vitest/commit/567d20b9)
    -   Add new CLI options - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5](https://togithub.com/vitest-dev/vitest/issues/5)[16](https://togithub.com/vitest-dev/vitest/actions/runs/7934052979/job/21664152574#step:8:17)3 [<samp>(4e179)</samp>](https://togithub.com/vitest-dev/vitest/commit/4e179426)
    -   "test" accepts options object as the second parameter - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5142](https://togithub.com/vitest-dev/vitest/issues/5142) [<samp>(7d9b1)</samp>](https://togithub.com/vitest-dev/vitest/commit/7d9b1fb0)
-   **vm**:
    -   Support wasm module - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5131](https://togithub.com/vitest-dev/vitest/issues/5131) [<samp>(5ed53)</samp>](https://togithub.com/vitest-dev/vitest/commit/5ed537f0)

##### 🐞 Bug Fixes

-   Fix sourcemap in vm pools - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5063](https://togithub.com/vitest-dev/vitest/issues/5063) [<samp>(81105)</samp>](https://togithub.com/vitest-dev/vitest/commit/8110540a)
-   Don't optimize react/jsx-runtime by default when running in Node - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5079](https://togithub.com/vitest-dev/vitest/issues/5079) [<samp>(0d2bf)</samp>](https://togithub.com/vitest-dev/vitest/commit/0d2bfeac)
-   Rpc timeout error messages to include caller - by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5103](https://togithub.com/vitest-dev/vitest/issues/5103) [<samp>(a6e04)</samp>](https://togithub.com/vitest-dev/vitest/commit/a6e04bd8)
-   Requires fixed version across the monorepo - by [@&#8203;antfu](https://togithub.com/antfu) in [https://github.com/vitest-dev/vitest/issues/5208](https://togithub.com/vitest-dev/vitest/issues/5208) [<samp>(68f51)</samp>](https://togithub.com/vitest-dev/vitest/commit/68f51961)
-   Prevent merging of `poolOptions` - by [@&#8203;penalosa](https://togithub.com/penalosa) in [https://github.com/vitest-dev/vitest/issues/5221](https://togithub.com/vitest-dev/vitest/issues/5221) [<samp>(bc5b2)</samp>](https://togithub.com/vitest-dev/vitest/commit/bc5b2d04)
-   **browser**:
    -   Don't exclude node builtins from optimization - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5082](https://togithub.com/vitest-dev/vitest/issues/5082) [<samp>(714c9)</samp>](https://togithub.com/vitest-dev/vitest/commit/714c911f)
    -   Support `coverage.reportsDirectory` with multiple directories - by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5056](https://togithub.com/vitest-dev/vitest/issues/5056) [<samp>(ae73f)</samp>](https://togithub.com/vitest-dev/vitest/commit/ae73f273)
-   **cli**:
    -   Parse `--browser=<name>` correctly - by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5](https://togithub.com/vitest-dev/vitest/issues/5)[17](https://togithub.com/vitest-dev/vitest/actions/runs/7934052979/job/21664152574#step:8:18)9 [<samp>(656e2)</samp>](https://togithub.com/vitest-dev/vitest/commit/656e210b)
-   **coverage**:
    -   `.tmp` directory conflicts with `--shard` option - by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5](https://togithub.com/vitest-dev/vitest/issues/5)[18](https://togithub.com/vitest-dev/vitest/actions/runs/7934052979/job/21664152574#step:8:19)4 [<samp>(5749d)</samp>](https://togithub.com/vitest-dev/vitest/commit/5749d2c2)
-   **deps**:
    -   Update dependency strip-literal to v2 - by [@&#8203;renovate](https://togithub.com/renovate)\[bot] in[https://github.com/vitest-dev/vitest/issues/5136](https://togithub.com/vitest-dev/vitest/issues/5136)6 [<samp>(ef557)</samp>](https://togithub.com/vitest-dev/vitest/commit/ef557243)
-   **reporters**:
    -   Testsuite name should include project root in Junit output - by [@&#8203;fenghan34](https://togithub.com/fenghan34) in [https://github.com/vitest-dev/vitest/issues/5116](https://togithub.com/vitest-dev/vitest/issues/5116) [<samp>(2494f)</samp>](https://togithub.com/vitest-dev/vitest/commit/2494fbf2)
-   **typecheck**:
    -   Fix suite collection while-loop - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5065](https://togithub.com/vitest-dev/vitest/issues/5065) [<samp>(35675)</samp>](https://togithub.com/vitest-dev/vitest/commit/35675bd3)
-   **ui**:
    -   Fix tests duration time - by [@&#8203;vovsemenv](https://togithub.com/vovsemenv) in [https://github.com/vitest-dev/vitest/issues/52](https://togithub.com/vitest-dev/vitest/issues/52)[19](https://togithub.com/vitest-dev/vitest/actions/runs/7934052979/job/21664152574#step:8:20) [<samp>(58103)</samp>](https://togithub.com/vitest-dev/vitest/commit/581030ee)
-   **utils**:
    -   Fix asymmetric matcher diff inside array - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5189](https://togithub.com/vitest-dev/vitest/issues/5189) [<samp>(3ffcd)</samp>](https://togithub.com/vitest-dev/vitest/commit/3ffcd2ea)
-   **vitest**:
    -   Correctly report failed test files as failures in json reporter, export json reporter types - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5081](https://togithub.com/vitest-dev/vitest/issues/5081) [<samp>(0417b)</samp>](https://togithub.com/vitest-dev/vitest/commit/0417ba\[20]\(https://github.com/vitest-dev/vitest/actions/runs/7934052979/job/21664152574#step:8:21\))
    -   Don't run typecheck tests in browser if both are enabled - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5080](https://togithub.com/vitest-dev/vitest/issues/5080) [<samp>(1045b)</samp>](https://togithub.com/vitest-dev/vitest/commit/1045b98b)
    -   Handle function config inside `defineWorkspace` - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5089](https://togithub.com/vitest-dev/vitest/issues/5089) [<samp>(0bf52)</samp>](https://togithub.com/vitest-dev/vitest/commit/0bf52533)
    -   Remove excessive listeners when running without isolation, don't reset the state - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5132](https://togithub.com/vitest-dev/vitest/issues/5132) [<samp>(b607f)</samp>](https://togithub.com/vitest-dev/vitest/commit/b607f1ea)
    -   Auto-enable "github-actions" only where users didn't configure reporters - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5158](https://togithub.com/vitest-dev/vitest/issues/5158) [<samp>(ef044)</samp>](https://togithub.com/vitest-dev/vitest/commit/ef0440cb)
    -   Support more array cli options - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5162](https://togithub.com/vitest-dev/vitest/issues/5162) [<samp>(3afe6)</samp>](https://togithub.com/vitest-dev/vitest/commit/3afe68f1)
    -   Add types for the new global `jsdom` variable - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5164](https://togithub.com/vitest-dev/vitest/issues/5164) [<samp>(0f898)</samp>](https://togithub.com/vitest-dev/vitest/commit/0f898d87)
    -   Expose onTestFinished globally - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) [<samp>(1304f)</samp>](https://togithub.com/vitest-dev/vitest/commit/1304fed7)
    -   Disable optimizer by default until it's stable - by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5156](https://togithub.com/vitest-dev/vitest/issues/5156) [<samp>(e1bd8)</samp>](https://togithub.com/vitest-dev/vitest/commit/e1bd8d5d)
    -   Delegate snapshot options to workspace from root config - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5199](https://togithub.com/vitest-dev/vitest/issues/5199) [<samp>(86297)</samp>](https://togithub.com/vitest-dev/vitest/commit/86297d42)
    -   Fix `optimizeDeps.disabled` warnings on Vite 5.1 - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5](https://togithub.com/vitest-dev/vitest/issues/5)[21](https://togithub.com/vitest-dev/vitest/actions/runs/7934052979/job/21664152574#step:8:22)5 [<samp>(1aecd)</samp>](https://togithub.com/vitest-dev/vitest/commit/1aecd650)
-   **vm**:
    -   Handle `disableConsoleIntercept` config - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in https://github.com/vitest-dev/vitest/issues/[50](https://togithub.com/vitest-dev/vitest/actions/runs/7934052979/job/21664152574#step:8:51)74 [<samp>(a55ad)</samp>](https://togithub.com/vitest-dev/vitest/commit/a55adac6)
    -   Improve error when module is not found - by [@&#8203;hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/50](https://togithub.com/vitest-dev/vitest/issues/50)[53](https://togithub.com/vitest-dev/vitest/actions/runs/7934052979/job/21664152574#step:8:54) [<samp>(79a50)</samp>](https://togithub.com/vitest-dev/vitest/commit/79a50c3f)

##### [View changes on GitHub](https://togithub.com/vitest-dev/vitest/compare/v1.2.2...v1.3.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.

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

---

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

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIwMC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-21 12:24:48 +00:00
Cats Juice
ed0d67ee56 fix(component): nowrap inline-edit (#5844) 2024-02-21 10:03:05 +00:00
LongYinan
201f68056e build(deps): bump ip from 2.0.0 to 2.0.1 (#5855)
Bumps [ip](https://github.com/indutny/node-ip) from 2.0.0 to 2.0.1.
<details>
<summary>Commits</summary>
<ul>
<li><a href="3b0994a74e"><code>3b0994a</code></a> 2.0.1</li>
<li><a href="32f468f124"><code>32f468f</code></a> lib: fixed CVE-2023-42282 and added unit test</li>
<li>See full diff in <a href="https://github.com/indutny/node-ip/compare/v2.0.0...v2.0.1">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ip&package-manager=npm_and_yarn&previous-version=2.0.0&new-version=2.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/toeverything/AFFiNE/network/alerts).

</details>
2024-02-21 08:41:24 +00:00
LongYinan
bd43f73904 fix(electron): linux AppImage output path (#5853) 2024-02-21 08:00:58 +00:00
Ayush Agrawal
11b3184537 feat: blocksuite integration for pageMode & pageUpdatedAt (#5849)
Co-authored-by: LongYinan <lynweklm@gmail.com>
2024-02-21 15:03:02 +08:00
Lye Hongtao
4641bc422b feat: move templates into AFFiNE (#5750)
Related to https://github.com/toeverything/blocksuite/pull/6156

### Change
Move the edgeless templates to AFFiNE. All templates are stored as zip files. Run `node build-edgeless.mjs` in `@affine/templates` to generate JSON-format templates and importing script. The template will be generated automatically during building and dev (`yarn dev`).
2024-02-21 06:26:01 +00:00
Ayush Agrawal
53b312c06f chore: bump blocksuite (#5852) 2024-02-21 14:06:53 +08:00
liuyi
d2bf1451fa ci: fix canary deployment (#5851) 2024-02-21 03:01:33 +00:00
Cats Juice
3fe9d834de feat(core): replace page filter, journal's date-picker with new one (#5675) 2024-02-20 13:53:41 +00:00
Cats Juice
e664494b2f refactor(component): new calendar-view DatePicker (#5654) 2024-02-20 13:53:37 +00:00
JimmFly
876b85304e feat(core): add loading to quick search modal (#5785)
close AFF-285

add `useSyncEngineStatus` hooks
add loading style

<img width="977" alt="test1" src="https://github.com/toeverything/AFFiNE/assets/102217452/e8bf6714-e42b-4adf-a279-341ef5f5cfc0">
2024-02-20 13:05:22 +00:00
JimmFly
3792506b09 feat(core): add history tips modal (#5733)
close TOV-459 TOV-503

https://github.com/toeverything/AFFiNE/assets/102217452/9cbfaf35-bc7b-4275-94be-6e777447ef11
2024-02-20 12:50:55 +00:00
JimmFly
4068e7aeff feat(core): add starAFFiNE and issueFeedback modal (#5718)
close TOV-482

https://github.com/toeverything/AFFiNE/assets/102217452/da1f74bc-4b8d-4d7f-987d-f53da98d92fe
2024-02-20 12:50:51 +00:00
Ayush Agrawal
6fad241350 feat: bump blocksuite (#5845) 2024-02-20 20:49:41 +08:00
JimmFly
a554c8aabe fix(core): match page preview and page title in page list (#5840)
close TOV-578
2024-02-20 09:27:23 +00:00
LongYinan
7ec3ef8753 chore: bump up nx-cloud version to v18 (#5790)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [nx-cloud](https://nx.app) | [`^16.5.2` -> `^18.0.0`](https://renovatebot.com/diffs/npm/nx-cloud/16.5.2/18.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nx-cloud/18.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nx-cloud/18.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nx-cloud/16.5.2/18.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nx-cloud/16.5.2/18.0.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 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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIwMC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-20 09:15:27 +00:00
LongYinan
15cedcefc5 chore: upgrade Rust to 1.76 (#5843) 2024-02-20 09:01:43 +00:00
Adithyan
afe59a864d feat: Duplicate page in page list and clone naming improvements (#5818) 2024-02-20 16:44:25 +08:00
LongYinan
aa79229a21 chore: bump up nrwl monorepo to v18 (major) (#5791)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@nx/vite](https://nx.dev) ([source](https://togithub.com/nrwl/nx/tree/HEAD/packages/vite)) | [`17.3.1` -> `18.0.4`](https://renovatebot.com/diffs/npm/@nx%2fvite/17.3.1/18.0.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nx%2fvite/18.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nx%2fvite/18.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nx%2fvite/17.3.1/18.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nx%2fvite/17.3.1/18.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [nx](https://nx.dev) ([source](https://togithub.com/nrwl/nx/tree/HEAD/packages/nx)) | [`^17.1.3` -> `^18.0.0`](https://renovatebot.com/diffs/npm/nx/17.3.1/18.0.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nx/18.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nx/18.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nx/17.3.1/18.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nx/17.3.1/18.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [nx](https://nx.dev) ([source](https://togithub.com/nrwl/nx/tree/HEAD/packages/nx)) | [`^17.2.8` -> `^18.0.0`](https://renovatebot.com/diffs/npm/nx/17.3.1/18.0.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nx/18.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nx/18.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nx/17.3.1/18.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nx/17.3.1/18.0.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nrwl/nx (@&#8203;nx/vite)</summary>

### [`v18.0.4`](https://togithub.com/nrwl/nx/releases/tag/18.0.4)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.0.3...18.0.4)

##### 18.0.4 (2024-02-09)

##### 🚀 Features

-   **core:** update swc/register ([#&#8203;21755](https://togithub.com/nrwl/nx/pull/21755))
-   **expo:** support cjs and mjs ([#&#8203;21408](https://togithub.com/nrwl/nx/pull/21408))
-   **nx-dev:** update launch conf timings ([db78715a70](https://togithub.com/nrwl/nx/commit/db78715a70))
-   **nx-dev:** update launch page link text ([#&#8203;21747](https://togithub.com/nrwl/nx/pull/21747))

##### 🩹 Fixes

-   **angular:** resolve the index html transformer correctly for esbuild based build targets in dev-server ([#&#8203;21679](https://togithub.com/nrwl/nx/pull/21679))
-   **angular:** generate app server module setup correctly in setup-ssr generator ([#&#8203;21702](https://togithub.com/nrwl/nx/pull/21702))
-   **angular:** add missing forceEsbuild option to dev-server executor ([#&#8203;21753](https://togithub.com/nrwl/nx/pull/21753))
-   **core:** remove implementation detail from warning ([89797d2f7a](https://togithub.com/nrwl/nx/commit/89797d2f7a))
-   **core:** static run one lifecycle should always print dependent task status, and output when verbose ([#&#8203;21720](https://togithub.com/nrwl/nx/pull/21720))
-   **js:** babel preset should also check for JEST_WORKER_ID to transpile to CJS ([#&#8203;21754](https://togithub.com/nrwl/nx/pull/21754))
-   **misc:** pin generated vite version to ~5.0.0 to avoid issues with storybook ([#&#8203;21740](https://togithub.com/nrwl/nx/pull/21740))
-   **module-federation:** map static remote locations correctly ([#&#8203;21709](https://togithub.com/nrwl/nx/pull/21709))
-   **nextjs:** src package.json should not be copied to output folder ([b0506c9f8f](https://togithub.com/nrwl/nx/commit/b0506c9f8f))
-   **nextjs:** Custom server should work with Crystal ([#&#8203;21736](https://togithub.com/nrwl/nx/pull/21736))
-   **nx-dev:** remove fence from new packages and "nx add" commands ([#&#8203;21705](https://togithub.com/nrwl/nx/pull/21705))
-   **playwright:** fix include in tsconfig.json ([#&#8203;21730](https://togithub.com/nrwl/nx/pull/21730))
-   **release:** logging improvements ([#&#8203;21692](https://togithub.com/nrwl/nx/pull/21692))
-   **release:** ensure `nx release publish --graph` only includes projects with target ([#&#8203;21726](https://togithub.com/nrwl/nx/pull/21726))
-   **release:** do not stop daemon in dry-run ([#&#8203;21743](https://togithub.com/nrwl/nx/pull/21743))
-   **remix:** do not rename root jest.preset.js ([#&#8203;21703](https://togithub.com/nrwl/nx/pull/21703))
-   **testing:** increase the default timeout to 15s for the dev server to start ([#&#8203;21716](https://togithub.com/nrwl/nx/pull/21716))
-   **testing:** ensure cypress closes the web dev server ([#&#8203;21759](https://togithub.com/nrwl/nx/pull/21759))

##### ❤️  Thank You

-   Austin Fahsl [@&#8203;fahslaj](https://togithub.com/fahslaj)
-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Emily Xiong [@&#8203;xiongemi](https://togithub.com/xiongemi)
-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)
-   James Henry [@&#8203;JamesHenry](https://togithub.com/JamesHenry)
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Juri [@&#8203;juristr](https://togithub.com/juristr)
-   Juri Strumpflohner [@&#8203;juristr](https://togithub.com/juristr)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Miroslav Jonas [@&#8203;meeroslav](https://togithub.com/meeroslav)
-   Miroslav Jonaš [@&#8203;meeroslav](https://togithub.com/meeroslav)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)
-   Yu Zheng

### [`v18.0.3`](https://togithub.com/nrwl/nx/releases/tag/18.0.3)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.0.2...18.0.3)

#### 18.0.3 (2024-02-07)

##### 🚀 Features

-   **bundling:** bump rollup-plugin-typescript2 version ([#&#8203;20609](https://togithub.com/nrwl/nx/pull/20609))
-   **remix:** add playwright option for e2eTestRunner ([#&#8203;21603](https://togithub.com/nrwl/nx/pull/21603))

##### 🩹 Fixes

-   **angular:** ajv hoisting issue ([#&#8203;21641](https://togithub.com/nrwl/nx/pull/21641))
-   **core:** add missing parts to ci workflws and update docs ([3078ecf66f](https://togithub.com/nrwl/nx/commit/3078ecf66f))
-   **core:** temporary use forked portable_pty to inherit cursor position for windows ([#&#8203;21683](https://togithub.com/nrwl/nx/pull/21683))
-   **core:** handle blocking stdin ([#&#8203;21672](https://togithub.com/nrwl/nx/pull/21672))
-   **linter:** adjust terminal run check for crystal ([#&#8203;21638](https://togithub.com/nrwl/nx/pull/21638))
-   **misc:** ensure swc transpiler process required files ([#&#8203;21674](https://togithub.com/nrwl/nx/pull/21674))
-   **nx-dev:** launch page mobile experience ([e8d2b471a8](https://togithub.com/nrwl/nx/commit/e8d2b471a8))
-   **nx-dev:** redirect on remote caching page ([#&#8203;21669](https://togithub.com/nrwl/nx/pull/21669))
-   **testing:** cleanup e2e atomization plugins ([#&#8203;21688](https://togithub.com/nrwl/nx/pull/21688))
-   **vite:** import esbuild before loading config to keep it in cache ([#&#8203;21685](https://togithub.com/nrwl/nx/pull/21685))

##### ❤️  Thank You

-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)
-   Jonathan Cammisuli
-   Juri [@&#8203;juristr](https://togithub.com/juristr)
-   Juri Strumpflohner [@&#8203;juristr](https://togithub.com/juristr)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Miroslav Jonas [@&#8203;meeroslav](https://togithub.com/meeroslav)
-   Miroslav Jonaš [@&#8203;meeroslav](https://togithub.com/meeroslav)
-   Nikita Barsukov [@&#8203;nsbarsukov](https://togithub.com/nsbarsukov)

### [`v18.0.2`](https://togithub.com/nrwl/nx/releases/tag/18.0.2)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.0.1...18.0.2)

##### 18.0.2 (2024-02-05)

##### 🩹 Fixes

-   **angular:** fix wrong trailing comma in mf bootstrap code generation ([#&#8203;21600](https://togithub.com/nrwl/nx/pull/21600))
-   **angular:** support inferred cypress targets in setup-mf generator ([#&#8203;21619](https://togithub.com/nrwl/nx/pull/21619))
-   **core:** pass the full resolved path of ts-node/esm when reloading the CLI ([#&#8203;21607](https://togithub.com/nrwl/nx/pull/21607))
-   **core:** remove logic to reload process with esm loader for Node 18 ([#&#8203;21623](https://togithub.com/nrwl/nx/pull/21623))
-   **core:** prevent target defaults from being discarded during merge process ([#&#8203;21624](https://togithub.com/nrwl/nx/pull/21624))
-   **misc:** handle workspaces if no plugin selected in nx init and only generate files after prompts ([#&#8203;21606](https://togithub.com/nrwl/nx/pull/21606))
-   **nextjs:** move `next/constants` from top-level import to when it is needed ([#&#8203;21612](https://togithub.com/nrwl/nx/pull/21612))
-   **nextjs:** Enable next e2e test ([#&#8203;21625](https://togithub.com/nrwl/nx/pull/21625))
-   **node:** Broken E2E tests ([#&#8203;21569](https://togithub.com/nrwl/nx/pull/21569))
-   **nx-dev:** redirect core-features page ([#&#8203;21616](https://togithub.com/nrwl/nx/pull/21616))
-   **webpack:** require ForkTsCheckerWebpackPlugin only as required ([#&#8203;21629](https://togithub.com/nrwl/nx/pull/21629))

##### ❤️  Thank You

-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)
-   Katerina Skroumpelou [@&#8203;mandarini](https://togithub.com/mandarini)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)

### [`v18.0.1`](https://togithub.com/nrwl/nx/releases/tag/18.0.1)

[Compare Source](https://togithub.com/nrwl/nx/compare/18.0.0...18.0.1)

##### 18.0.1 (2024-02-04)

##### 🩹 Fixes

-   **core:** nx cloud prompt during migrate doesn't skip connection ([#&#8203;21588](https://togithub.com/nrwl/nx/pull/21588))

##### ❤️  Thank You

-   Philip Fulcher

### [`v18.0.0`](https://togithub.com/nrwl/nx/releases/tag/18.0.0)

[Compare Source](https://togithub.com/nrwl/nx/compare/17.3.2...18.0.0)

##### 18.0.0 (2024-02-03)

Nx 18 introduces Project Crystal 💎, a significant shift towards making Nx more transparent and easy to understand! [Learn more here!](https://nx.dev/concepts/inferred-tasks). This is now enabled by default where avaialble and is the reason why we decided to mark it as a major version.

> Note: Though this is a major version, there are no removals of previous deprecations. Any deprecations which were previously scheduled for Nx 18 are now scheduled for Nx 19 which will still be coming out around April 2024.

##### 🚀 Features

-   **angular:** add generator to convert targets to use the esbuild-based application executor ([#&#8203;21333](https://togithub.com/nrwl/nx/pull/21333))
-   **core:** don't clear NX_BASE or NX_HEAD ([#&#8203;20125](https://togithub.com/nrwl/nx/pull/20125))
-   **core:** log to guide users to show details after project generation ([#&#8203;21350](https://togithub.com/nrwl/nx/pull/21350))
-   **core:** improve nx connect success message ([#&#8203;21295](https://togithub.com/nrwl/nx/pull/21295))
-   **core:** add support for loading .ts files using ESM ([#&#8203;21268](https://togithub.com/nrwl/nx/pull/21268))
-   **core:** support --use-agents and --no-agents ([#&#8203;21472](https://togithub.com/nrwl/nx/pull/21472))
-   **core:** enable project crystal by default ([#&#8203;21403](https://togithub.com/nrwl/nx/pull/21403))
-   **core:** move distribution to beginning of generated ci workflows ([#&#8203;21483](https://togithub.com/nrwl/nx/pull/21483))
-   **core:** add migration to disable adding plugins automatically in existing workspaces ([#&#8203;21508](https://togithub.com/nrwl/nx/pull/21508))
-   **core:** add log lines grouping for GH Actions ([#&#8203;21357](https://togithub.com/nrwl/nx/pull/21357))
-   **core:** add fallback flow to nx init when no plugins are detected ([#&#8203;21538](https://togithub.com/nrwl/nx/pull/21538))
-   **core:** improve the commented dte message on ci-workflows ([#&#8203;21524](https://togithub.com/nrwl/nx/pull/21524))
-   **core:** add e2e to ci workflows ([#&#8203;21487](https://togithub.com/nrwl/nx/pull/21487))
-   **devkit:** improving error handeling read target options ([#&#8203;20336](https://togithub.com/nrwl/nx/pull/20336))
-   **devkit:** add loadConfigFile function for plugins to use ([#&#8203;21511](https://togithub.com/nrwl/nx/pull/21511))
-   **linter:** add error and warning statistics ([#&#8203;18313](https://togithub.com/nrwl/nx/pull/18313))
-   **linter:** add option for [@&#8203;nx/dependency-checks](https://togithub.com/nx/dependency-checks) to update workspace dependencies using local file paths ([#&#8203;20157](https://togithub.com/nrwl/nx/pull/20157))
-   **nextjs:** upgrade Next.js 14.0.3 ([#&#8203;20334](https://togithub.com/nrwl/nx/pull/20334))
-   **nx-dev:** more logos & announcement banner ([#&#8203;21444](https://togithub.com/nrwl/nx/pull/21444))
-   **react-native:** add useTransformReactJSX babel config to generators ([#&#8203;19170](https://togithub.com/nrwl/nx/pull/19170))
-   **react-native:** upgrade react native to 0.73 ([#&#8203;20896](https://togithub.com/nrwl/nx/pull/20896))
-   **vite:** allow passing path to custom tsconfig file when skipTypeCheck is false ([#&#8203;19784](https://togithub.com/nrwl/nx/pull/19784))

##### 🩹 Fixes

-   nestjs lib generator pass skipPackageJson flag to js lib generator ([#&#8203;20442](https://togithub.com/nrwl/nx/pull/20442))
-   **angular:** fix dev-server validation for esbuildMiddleware ([#&#8203;21413](https://togithub.com/nrwl/nx/pull/21413))
-   **angular:** should not log invalid extension includedScripts ([#&#8203;21441](https://togithub.com/nrwl/nx/pull/21441))
-   **angular:** handle indexHtmlTransformer option in dev-server correctly ([#&#8203;21520](https://togithub.com/nrwl/nx/pull/21520))
-   **bundling:** consider index/folder imports in manual file resolution ([#&#8203;19030](https://togithub.com/nrwl/nx/pull/19030))
-   **core:** remove misleading message at front of error ([#&#8203;21443](https://togithub.com/nrwl/nx/pull/21443))
-   **core:** new generator not skipping package installation ([#&#8203;17927](https://togithub.com/nrwl/nx/pull/17927))
-   **core:** include typescript package when calculating project hashes ([#&#8203;21285](https://togithub.com/nrwl/nx/pull/21285))
-   **core:** do not append node_module paths in `run-script` executor ([#&#8203;21445](https://togithub.com/nrwl/nx/pull/21445))
-   **core:** update axios to address CVE-2023-45857 ([#&#8203;20493](https://togithub.com/nrwl/nx/pull/20493))
-   **core:** Add missing migration from playwright ([#&#8203;21448](https://togithub.com/nrwl/nx/pull/21448))
-   **core:** always remove cursor reset in terminal output for Windows ([#&#8203;21467](https://togithub.com/nrwl/nx/pull/21467))
-   **core:** do not run pty in run-script when we're not TTY ([#&#8203;21496](https://togithub.com/nrwl/nx/pull/21496))
-   **core:** target defaults should be able to apply to multiple targets with the same executor ([#&#8203;21438](https://togithub.com/nrwl/nx/pull/21438))
-   **core:** nx build --graph file.json should work in subdirectories ([#&#8203;19858](https://togithub.com/nrwl/nx/pull/19858))
-   **core:** Update Nx Welcome to include nx show project ([#&#8203;21509](https://togithub.com/nrwl/nx/pull/21509))
-   **core:** handle negative patterns better when specified in pnpm-workspaces ([#&#8203;19983](https://togithub.com/nrwl/nx/pull/19983))
-   **core:** module federation migration for project with no targets ([#&#8203;21536](https://togithub.com/nrwl/nx/pull/21536))
-   **core:** remove the full workspace path with node_modules from the path env variable when running `run-scripts` ([#&#8203;21532](https://togithub.com/nrwl/nx/pull/21532))
-   **core:** do not watch temporary vite files ([#&#8203;21514](https://togithub.com/nrwl/nx/pull/21514))
-   **core:** target defaults from specifier should not be clobbered by name based target defaults ([#&#8203;21539](https://togithub.com/nrwl/nx/pull/21539))
-   **core:** fix missing nxCloud error message on ci workflows ([#&#8203;21564](https://togithub.com/nrwl/nx/pull/21564))
-   **core:** handle spaces when launching nxFork ([#&#8203;21571](https://togithub.com/nrwl/nx/pull/21571))
-   **expo:** set port for e2e ([#&#8203;21559](https://togithub.com/nrwl/nx/pull/21559))
-   **graph:** repair externalApiService usage broken after refactor ([#&#8203;21422](https://togithub.com/nrwl/nx/pull/21422))
-   **graph:** fix expand when using external api ([#&#8203;21433](https://togithub.com/nrwl/nx/pull/21433))
-   **graph:** don't show open config button on nx.dev & refactor tooltips ([#&#8203;21463](https://togithub.com/nrwl/nx/pull/21463))
-   **graph:** fix openen project details with expanded target from external api ([#&#8203;21548](https://togithub.com/nrwl/nx/pull/21548))
-   **js:** allow inlined libs without imports ([#&#8203;20649](https://togithub.com/nrwl/nx/pull/20649))
-   **js:** package type is module should emit esm ([#&#8203;21473](https://togithub.com/nrwl/nx/pull/21473))
-   **linter:** remove extend of [@&#8203;angular-eslint/recommended--extra](https://togithub.com/angular-eslint/recommended--extra) config ([#&#8203;18465](https://togithub.com/nrwl/nx/pull/18465))
-   **linter:** restore rules to match previous [@&#8203;typescript-eslint/recommended](https://togithub.com/typescript-eslint/recommended) ([#&#8203;21424](https://togithub.com/nrwl/nx/pull/21424))
-   **linter:** make target default migrations a bit more robust ([#&#8203;21446](https://togithub.com/nrwl/nx/pull/21446))
-   **linter:** make eslint mandatory dependency ([#&#8203;21406](https://togithub.com/nrwl/nx/pull/21406))
-   **linter:** ensure flat config generator works for pcv3 plugin ([#&#8203;21485](https://togithub.com/nrwl/nx/pull/21485))
-   **linter:** remove reportUnusedDisableDirectives for flat config ([#&#8203;21405](https://togithub.com/nrwl/nx/pull/21405))
-   **linter:** prevent dep-checks leaking when used outside nx ([#&#8203;21404](https://togithub.com/nrwl/nx/pull/21404))
-   **misc:** prevent ts-node from reading tsconfig when registering transpiler ([#&#8203;21381](https://togithub.com/nrwl/nx/pull/21381))
-   **misc:** set $schema in nx.json generated during nx init ([#&#8203;21455](https://togithub.com/nrwl/nx/pull/21455))
-   **misc:** use caret for semver version ([#&#8203;18140](https://togithub.com/nrwl/nx/pull/18140))
-   **module-federation:** ensure the static remotes env var is used for task hashing [#&#8203;21390](https://togithub.com/nrwl/nx/issues/21390) ([#&#8203;21414](https://togithub.com/nrwl/nx/pull/21414), [#&#8203;21390](https://togithub.com/nrwl/nx/issues/21390))
-   **module-federation:** ensure incorrect tsconfig path mappings are not used [#&#8203;21391](https://togithub.com/nrwl/nx/issues/21391) ([#&#8203;21416](https://togithub.com/nrwl/nx/pull/21416), [#&#8203;21391](https://togithub.com/nrwl/nx/issues/21391))
-   **nest:** exclude react-specific packages when generating nx nest monorepo ([#&#8203;21153](https://togithub.com/nrwl/nx/pull/21153))
-   **nest:** ensure dependencies are installed when generating nest libraries ([#&#8203;21534](https://togithub.com/nrwl/nx/pull/21534))
-   **nextjs:** Add missing support swc for custom server ([#&#8203;21401](https://togithub.com/nrwl/nx/pull/21401))
-   **nextjs:** lazy load plugin import ([#&#8203;21426](https://togithub.com/nrwl/nx/pull/21426))
-   **nextjs:** nextjs standalone playwright linting ([#&#8203;21555](https://togithub.com/nrwl/nx/pull/21555))
-   **nextjs:** vite workspace libs ([#&#8203;21553](https://togithub.com/nrwl/nx/pull/21553))
-   **nuxt:** change nuxi to nuxt ([#&#8203;21484](https://togithub.com/nrwl/nx/pull/21484))
-   **nx-dev:** fix hero text typo ([#&#8203;20937](https://togithub.com/nrwl/nx/pull/20937))
-   **nx-dev:** remove unmatched bracket. updates warning description ([#&#8203;19481](https://togithub.com/nrwl/nx/pull/19481))
-   **nx-dev:** launch week agenda minor fixes ([#&#8203;21419](https://togithub.com/nrwl/nx/pull/21419))
-   **nx-dev:** typos on launch-nx website ([#&#8203;21552](https://togithub.com/nrwl/nx/pull/21552))
-   **react:** import SupportedStyles type from correct path ([#&#8203;20239](https://togithub.com/nrwl/nx/pull/20239))
-   **react:** setup-ssr generator should not read the graph for a project that doesnt exist ([#&#8203;21522](https://togithub.com/nrwl/nx/pull/21522))
-   **react:** extensions - vite e2e test ([#&#8203;21530](https://togithub.com/nrwl/nx/pull/21530))
-   **react:** app generator should handle crystal workspaces ([#&#8203;21537](https://togithub.com/nrwl/nx/pull/21537))
-   **react-native:** Application generator failing ([#&#8203;21507](https://togithub.com/nrwl/nx/pull/21507))
-   **release:** skip lock file update if yarn classic ([#&#8203;21489](https://togithub.com/nrwl/nx/pull/21489))
-   **testing:** fix config references to js files ([#&#8203;21018](https://togithub.com/nrwl/nx/pull/21018))
-   **testing:** add support for generating and loading cypress config in ESM format ([#&#8203;21471](https://togithub.com/nrwl/nx/pull/21471))
-   **vite:** prevent vite:build copying package.json when generatePackageJson false ([#&#8203;19780](https://togithub.com/nrwl/nx/pull/19780))
-   **vite:** deep file resolution in nx-tsconfig-paths.plugin.ts ([#&#8203;21513](https://togithub.com/nrwl/nx/pull/21513))
-   **vue:** do not add [@&#8203;vue/tsconfig](https://togithub.com/vue/tsconfig) dependency ([#&#8203;19873](https://togithub.com/nrwl/nx/pull/19873))
-   **webpack:** correctly handle data URIs with escaped quotes in style… ([#&#8203;20988](https://togithub.com/nrwl/nx/pull/20988))
-   **webpack:** fix webpack plugin issues and e2e tests ([#&#8203;21531](https://togithub.com/nrwl/nx/pull/21531))

##### ❤️  Thank You

-   Adam Hunter [@&#8203;adamrhunter](https://togithub.com/adamrhunter)
-   Altan Stalker
-   andreasmoller25 [@&#8203;andreasmoller25](https://togithub.com/andreasmoller25)
-   Austin Fahsl [@&#8203;fahslaj](https://togithub.com/fahslaj)
-   Benjamin Kroeger [@&#8203;benkroeger](https://togithub.com/benkroeger)
-   Christian Käslin
-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Denis Frenademetz [@&#8203;skrtheboss](https://togithub.com/skrtheboss)
-   Eduardo Barros
-   Emily Xiong [@&#8203;xiongemi](https://togithub.com/xiongemi)
-   Ian Chadwick [@&#8203;ianchadwick](https://togithub.com/ianchadwick)
-   Isaac Mann [@&#8203;isaacplmann](https://togithub.com/isaacplmann)
-   Jack Hsu [@&#8203;jaysoo](https://togithub.com/jaysoo)
-   James Henry [@&#8203;JamesHenry](https://togithub.com/JamesHenry)
-   Jan Pretzel
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Jonathan Cammisuli
-   Juri Strumpflohner [@&#8203;juristr](https://togithub.com/juristr)
-   Katerina Skroumpelou [@&#8203;mandarini](https://togithub.com/mandarini)
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Lukas [@&#8203;LukasTy](https://togithub.com/LukasTy)
-   MaxKless [@&#8203;MaxKless](https://togithub.com/MaxKless)
-   Michal Jez [@&#8203;MJez29](https://togithub.com/MJez29)
-   Mihail Golban [@&#8203;mihailgolban](https://togithub.com/mihailgolban)
-   Miloš Lajtman [@&#8203;miluoshi](https://togithub.com/miluoshi)
-   Miroslav Jonaš [@&#8203;meeroslav](https://togithub.com/meeroslav)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)
-   Phillip Barta [@&#8203;Phillip9587](https://togithub.com/Phillip9587)
-   Remco Krams
-   Simeon Cheeseman [@&#8203;SimeonC](https://togithub.com/SimeonC)
-   Tobbb
-   Vinit Neogi [@&#8203;vneogi199](https://togithub.com/vneogi199)
-   wout junius [@&#8203;wout-junius](https://togithub.com/wout-junius)
-   Zac Bristow
-   zenvanexus [@&#8203;zenvanexus](https://togithub.com/zenvanexus)

### [`v17.3.2`](https://togithub.com/nrwl/nx/releases/tag/17.3.2)

[Compare Source](https://togithub.com/nrwl/nx/compare/17.3.1...17.3.2)

##### 17.3.2 (2024-02-03)

##### 🚀 Features

-   **core:** add log lines grouping for GH Actions ([#&#8203;21357](https://togithub.com/nrwl/nx/pull/21357))
-   **linter:** add error and warning statistics ([#&#8203;18313](https://togithub.com/nrwl/nx/pull/18313))

##### 🩹 Fixes

-   **angular:** handle indexHtmlTransformer option in dev-server correctly ([#&#8203;21520](https://togithub.com/nrwl/nx/pull/21520))
-   **core:** update axios to address CVE-2023-45857 ([#&#8203;20493](https://togithub.com/nrwl/nx/pull/20493))
-   **core:** Add missing migration from playwright ([#&#8203;21448](https://togithub.com/nrwl/nx/pull/21448))
-   **core:** always remove cursor reset in terminal output for Windows ([#&#8203;21467](https://togithub.com/nrwl/nx/pull/21467))
-   **core:** do not run pty in run-script when we're not TTY ([#&#8203;21496](https://togithub.com/nrwl/nx/pull/21496))
-   **core:** target defaults should be able to apply to multiple targets with the same executor ([#&#8203;21438](https://togithub.com/nrwl/nx/pull/21438))
-   **core:** nx build --graph file.json should work in subdirectories ([#&#8203;19858](https://togithub.com/nrwl/nx/pull/19858))
-   **core:** Update Nx Welcome to include nx show project ([#&#8203;21509](https://togithub.com/nrwl/nx/pull/21509))
-   **core:** handle negative patterns better when specified in pnpm-workspaces ([#&#8203;19983](https://togithub.com/nrwl/nx/pull/19983))
-   **core:** remove the full workspace path with node_modules from the path env variable when running `run-scripts` ([#&#8203;21532](https://togithub.com/nrwl/nx/pull/21532))
-   **core:** do not watch temporary vite files ([#&#8203;21514](https://togithub.com/nrwl/nx/pull/21514))
-   **core:** target defaults from specifier should not be clobbered by name based target defaults ([#&#8203;21539](https://togithub.com/nrwl/nx/pull/21539))
-   **graph:** fix expand when using external api ([#&#8203;21433](https://togithub.com/nrwl/nx/pull/21433))
-   **graph:** don't show open config button on nx.dev & refactor tooltips ([#&#8203;21463](https://togithub.com/nrwl/nx/pull/21463))
-   **js:** package type is module should emit esm ([#&#8203;21473](https://togithub.com/nrwl/nx/pull/21473))
-   **linter:** make eslint mandatory dependency ([#&#8203;21406](https://togithub.com/nrwl/nx/pull/21406))
-   **linter:** ensure flat config generator works for pcv3 plugin ([#&#8203;21485](https://togithub.com/nrwl/nx/pull/21485))
-   **linter:** remove reportUnusedDisableDirectives for flat config ([#&#8203;21405](https://togithub.com/nrwl/nx/pull/21405))
-   **linter:** prevent dep-checks leaking when used outside nx ([#&#8203;21404](https://togithub.com/nrwl/nx/pull/21404))
-   **misc:** set $schema in nx.json generated during nx init ([#&#8203;21455](https://togithub.com/nrwl/nx/pull/21455))
-   **misc:** use caret for semver version ([#&#8203;18140](https://togithub.com/nrwl/nx/pull/18140))
-   **module-federation:** ensure the static remotes env var is used for task hashing [#&#8203;21390](https://togithub.com/nrwl/nx/issues/21390) ([#&#8203;21414](https://togithub.com/nrwl/nx/pull/21414), [#&#8203;21390](https://togithub.com/nrwl/nx/issues/21390))
-   **module-federation:** ensure incorrect tsconfig path mappings are not used [#&#8203;21391](https://togithub.com/nrwl/nx/issues/21391) ([#&#8203;21416](https://togithub.com/nrwl/nx/pull/21416), [#&#8203;21391](https://togithub.com/nrwl/nx/issues/21391))
-   **nest:** exclude react-specific packages when generating nx nest monorepo ([#&#8203;21153](https://togithub.com/nrwl/nx/pull/21153))
-   **release:** skip lock file update if yarn classic ([#&#8203;21489](https://togithub.com/nrwl/nx/pull/21489))
-   **testing:** fix config references to js files ([#&#8203;21018](https://togithub.com/nrwl/nx/pull/21018))
-   **vite:** deep file resolution in nx-tsconfig-paths.plugin.ts ([#&#8203;21513](https://togithub.com/nrwl/nx/pull/21513))
-   **webpack:** correctly handle data URIs with escaped quotes in style… ([#&#8203;20988](https://togithub.com/nrwl/nx/pull/20988))

##### ❤️  Thank You

-   andreasmoller25 [@&#8203;andreasmoller25](https://togithub.com/andreasmoller25)
-   Austin Fahsl [@&#8203;fahslaj](https://togithub.com/fahslaj)
-   Colum Ferry [@&#8203;Coly010](https://togithub.com/Coly010)
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Emily Xiong [@&#8203;xiongemi](https://togithub.com/xiongemi)
-   Ian Chadwick [@&#8203;ianchadwick](https://togithub.com/ianchadwick)
-   Jason Jean [@&#8203;FrozenPandaz](https://togithub.com/FrozenPandaz)
-   Jonathan Cammisuli
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   Lukas [@&#8203;LukasTy](https://togithub.com/LukasTy)
-   MaxKless [@&#8203;MaxKless](https://togithub.com/MaxKless)
-   Mihail Golban [@&#8203;mihailgolban](https://togithub.com/mihailgolban)
-   Miroslav Jonaš [@&#8203;meeroslav](https://togithub.com/meeroslav)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)
-   Phillip Barta [@&#8203;Phillip9587](https://togithub.com/Phillip9587)
-   Remco Krams
-   Simeon Cheeseman [@&#8203;SimeonC](https://togithub.com/SimeonC)

</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 these updates again.

---

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

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIwMC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-20 08:28:37 +00:00
Muhammad Arsil
1eb317d8fa fix: cards overlapping issue (#5727)
Co-authored-by: EYHN <cneyhn@gmail.com>
2024-02-20 16:27:43 +08:00
LongYinan
b8679172c9 chore: bump up electron version to v29 (#5841)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

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

---

### Release Notes

<details>
<summary>electron/electron (electron)</summary>

### [`v29.0.0`](https://togithub.com/electron/electron/releases/tag/v29.0.0): electron v29.0.0

[Compare Source](https://togithub.com/electron/electron/compare/v28.2.3...v29.0.0)

### Release Notes for v29.0.0

#### Stack Upgrades

-   Chromium `122.0.6261.39`
    -   [New in 122](https://developer.chrome.com/blog/new-in-chrome-122/)
    -   [New in 121](https://developer.chrome.com/blog/new-in-chrome-121/)
-   Node `20.9.0`
    -   [Node 20.9.0 blog post](https://nodejs.org/en/blog/release/v20.9.0/)
-   V8 `12.2`

#### Breaking Changes

-   Functions called over the `contextBridge` are now called with the expected receiver (`this`). [#&#8203;39978](https://togithub.com/electron/electron/pull/39978) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/40262), [28](https://togithub.com/electron/electron/pull/40263))</span>
-   The `gpu-process-crashed` event on `app` has been deprecated. [#&#8203;40169](https://togithub.com/electron/electron/pull/40169) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/40195))</span>
-   The deprecated `gpu-process-crashed` event on `app` has been removed. [#&#8203;40255](https://togithub.com/electron/electron/pull/40255)
-   The deprecated `renderer-process-crashed` event on `app` and `crashed` event on `WebContents` and `<webview>` have been removed. [#&#8203;40115](https://togithub.com/electron/electron/pull/40115)

#### Features

##### Additions

-   Added `WebContentsView` and `BaseWindow`, replacing the now-deprecated `BrowserView` APIs. [#&#8203;40759](https://togithub.com/electron/electron/pull/40759)
-   Added `keyboardLock` to `ses.setPermissionRequestHandler(handler)`. [#&#8203;40369](https://togithub.com/electron/electron/pull/40369) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40458), [27](https://togithub.com/electron/electron/pull/40459), [28](https://togithub.com/electron/electron/pull/40460))</span>
-   Added an option in `protocol.registerSchemesAsPrivileged` to allow V8 code cache in custom schemes. [#&#8203;40544](https://togithub.com/electron/electron/pull/40544) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/40708), [28](https://togithub.com/electron/electron/pull/40709))</span>
-   Added net module to utility process. [#&#8203;40890](https://togithub.com/electron/electron/pull/40890) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/40968), [28](https://togithub.com/electron/electron/pull/40967))</span>
-   Added new [Electron Fuse](https://www.electronjs.org/docs/latest/tutorial/fuses) that opts the `file://` protocol into more secure and restrictive behaviour that matches Chromium. [#&#8203;40372](https://togithub.com/electron/electron/pull/40372)
-   Added new `webUtils.getPathForFile` method to replace `File.path` augmentation. [#&#8203;38776](https://togithub.com/electron/electron/pull/38776)
-   Added support for configuring `use_remote_checksums` via `.npmrc`. [#&#8203;40253](https://togithub.com/electron/electron/pull/40253)
-   Migrated `app.{set|get}LoginItemSettings(settings)` to use Apple's new recommended underlying framework on macOS. [#&#8203;37244](https://togithub.com/electron/electron/pull/37244)
-   This PR adds several properties to the `display` object including `detected`, `maximumCursorSize`, and `nativeOrigin`. [#&#8203;40497](https://togithub.com/electron/electron/pull/40497) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/40554))</span>

##### Removed/Deprecated

-   Removed extraneous dlls from Windows zip files. [#&#8203;41129](https://togithub.com/electron/electron/pull/41129) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/41128))</span>

#### Fixes

-   Added support for `ThumbnailCapturerMac` and `ScreenCaptureKitStreamPickerSonoma` chromium feature flags to bypass deprecated API warning on macOS 14.4. [#&#8203;41329](https://togithub.com/electron/electron/pull/41329)
-   Fixed Electron 29.0.0-beta.3 regression that could pop up context menus in the wrong location. [#&#8203;41296](https://togithub.com/electron/electron/pull/41296)
-   Fixed an issue where `import.meta.url` did not work in the renderer process with `contextIsolation` enabled. [#&#8203;41265](https://togithub.com/electron/electron/pull/41265)
-   Fixed an issue where `original-fs` methods were not properly corrected for patched imports. [#&#8203;41238](https://togithub.com/electron/electron/pull/41238)
-   Fixed an issue where draggable regions didn't work across platforms. [#&#8203;41112](https://togithub.com/electron/electron/pull/41112)
-   Fixed crash in MessagePort::close. [#&#8203;41237](https://togithub.com/electron/electron/pull/41237)
-   Fixed the `GrantFileProtocolExtraPrivileges` not correctly preventing `fetch()` calls to `file://` URLs. [#&#8203;40864](https://togithub.com/electron/electron/pull/40864)

##### Also in earlier versions...

-   Apply module search paths restriction on worker and child process. [#&#8203;41138](https://togithub.com/electron/electron/pull/41138) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/41139), [28](https://togithub.com/electron/electron/pull/41137))</span>
-   Backported fix for AVX related crashes on certain linux machines. [#&#8203;40536](https://togithub.com/electron/electron/pull/40536) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40540), [27](https://togithub.com/electron/electron/pull/40541), [28](https://togithub.com/electron/electron/pull/40542))</span>
-   CSS style `-webkit-app-region: drag;` has no effect in full screen mode. [#&#8203;41332](https://togithub.com/electron/electron/pull/41332) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/41331), [28](https://togithub.com/electron/electron/pull/41330))</span>
-   Fixed "will-navigate" not being emitted when pressing links in `chrome:` pages. [#&#8203;40390](https://togithub.com/electron/electron/pull/40390) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/40524), [28](https://togithub.com/electron/electron/pull/40525))</span>
-   Fixed `session.fromPartition()` key lookup bug. [#&#8203;41084](https://togithub.com/electron/electron/pull/41084) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/41083))</span>
-   Fixed a crash resultant from trying to listen to power-related events before the `ready` event was emitted on Linux. [#&#8203;40925](https://togithub.com/electron/electron/pull/40925) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40922), [27](https://togithub.com/electron/electron/pull/40923), [28](https://togithub.com/electron/electron/pull/40924))</span>
-   Fixed a crash that started occurring sporadically with some types of macOS window close. [#&#8203;41299](https://togithub.com/electron/electron/pull/41299) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/41298))</span>
-   Fixed a partition alloc ref count check for higher MacOS versions. [#&#8203;40766](https://togithub.com/electron/electron/pull/40766) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/40765))</span>
-   Fixed a potential `async_hooks` crash when listening for the `restore` event on Windows after minimizing a maximized BrowserWindow. [#&#8203;41146](https://togithub.com/electron/electron/pull/41146) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/41144), [28](https://togithub.com/electron/electron/pull/41145))</span>
-   Fixed a potential crash when calling `dialog.showMessageBoxSync`. [#&#8203;41043](https://togithub.com/electron/electron/pull/41043) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/41041), [28](https://togithub.com/electron/electron/pull/41042))</span>
-   Fixed a potential issue with `async_hook` corruption in some error contexts. [#&#8203;40574](https://togithub.com/electron/electron/pull/40574) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40592), [27](https://togithub.com/electron/electron/pull/40593), [28](https://togithub.com/electron/electron/pull/40594))</span>
-   Fixed a unexpectedly thrown error in some unsupported chrome extensions. [#&#8203;40500](https://togithub.com/electron/electron/pull/40500) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40512), [27](https://togithub.com/electron/electron/pull/40513), [28](https://togithub.com/electron/electron/pull/40514))</span>
-   Fixed an error changing file format in `dialog.showOpenDialog` on macOS. [#&#8203;40308](https://togithub.com/electron/electron/pull/40308) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/40347), [28](https://togithub.com/electron/electron/pull/40346))</span>
-   Fixed an issue where Request objects did not correctly copy headers into fetches. [#&#8203;41019](https://togithub.com/electron/electron/pull/41019) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/41103))</span>
-   Fixed an issue where WebViews could sometimes crash on unload. [#&#8203;40400](https://togithub.com/electron/electron/pull/40400) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40443), [27](https://togithub.com/electron/electron/pull/40444), [28](https://togithub.com/electron/electron/pull/40445))</span>
-   Fixed an issue where Windows Toast notifications weren't properly dismissed from the Action Center on `notification.close()` if they'd previously been dismissed. [#&#8203;40197](https://togithub.com/electron/electron/pull/40197) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40242), [27](https://togithub.com/electron/electron/pull/40244), [28](https://togithub.com/electron/electron/pull/40243))</span>
-   Fixed an issue where `MessagePorts` were not being correctly garbage collected when not referenced. [#&#8203;40189](https://togithub.com/electron/electron/pull/40189) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/40201))</span>
-   Fixed an issue where `inAppPurchase.getProducts` and `inAppPurchase.purchasedProduct` did not resolve as expected. [#&#8203;40957](https://togithub.com/electron/electron/pull/40957) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/40955), [28](https://togithub.com/electron/electron/pull/40956))</span>
-   Fixed an issue where `navigator.keyboard.lock()` did not work per [latest expected behavior](https://developer.chrome.com/blog/better-full-screen-mode). [#&#8203;40365](https://togithub.com/electron/electron/pull/40365) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40387), [27](https://togithub.com/electron/electron/pull/40388), [28](https://togithub.com/electron/electron/pull/40389))</span>
-   Fixed an issue where `select-usb-device` did not respect the `filter` option in `navigator.usb.requestDevice()`. [#&#8203;41197](https://togithub.com/electron/electron/pull/41197) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/41196), [28](https://togithub.com/electron/electron/pull/41198))</span>
-   Fixed an issue where `webContents.printToPDF` could fail when certain combinations of `margins` and `pageSize` values are passed. [#&#8203;41266](https://togithub.com/electron/electron/pull/41266) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/41267))</span>
-   Fixed an issue where crashes in `node::Environment` destruction potentially wouldn't be propagated to the `
    Service ` exit handler. [#&#8203;41301](https://togithub.com/electron/electron/pull/41301) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/41300), [28](https://togithub.com/electron/electron/pull/41302))</span>
-   Fixed an issue where devtools could not be re-opened. [#&#8203;40666](https://togithub.com/electron/electron/pull/40666) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/40679))</span>
-   Fixed an issue where font requests were incorrectly being sent to dev tools multiple times per resource. [#&#8203;40681](https://togithub.com/electron/electron/pull/40681) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/40715), [28](https://togithub.com/electron/electron/pull/40688))</span>
-   Fixed an issue where fully occluded windows would return an empty image from `webContents.capturePage()` on Windows and Linux. [#&#8203;39730](https://togithub.com/electron/electron/pull/39730) <span style="font-size:small;">(Also in [25](https://togithub.com/electron/electron/pull/40186), [26](https://togithub.com/electron/electron/pull/40187), [27](https://togithub.com/electron/electron/pull/40188), [28](https://togithub.com/electron/electron/pull/40185))</span>
-   Fixed an issue where non-modal windows with vibrancy could have incorrectly rounded corners on Sonoma. [#&#8203;41037](https://togithub.com/electron/electron/pull/41037) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/41035), [28](https://togithub.com/electron/electron/pull/41036))</span>
-   Fixed an issue where the `printBackground` option in `webContents.printToPDF` did not work as expected. [#&#8203;41180](https://togithub.com/electron/electron/pull/41180) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/41179))</span>
-   Fixed an issue where zoom level settings did not persist per-session for webviews. [#&#8203;40650](https://togithub.com/electron/electron/pull/40650) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/41269), [28](https://togithub.com/electron/electron/pull/41268))</span>
-   Fixed an issue with webContents interaction with fullscreen and WCO on macOS. [#&#8203;40179](https://togithub.com/electron/electron/pull/40179) <span style="font-size:small;">(Also in [25](https://togithub.com/electron/electron/pull/40220), [26](https://togithub.com/electron/electron/pull/40218), [27](https://togithub.com/electron/electron/pull/40217), [28](https://togithub.com/electron/electron/pull/40219))</span>
-   Fixed app incorrectly activating panel windows on macOS Sonoma. [#&#8203;40307](https://togithub.com/electron/electron/pull/40307) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/40465))</span>
-   Fixed child window opening in non-active macOS apps. [#&#8203;40546](https://togithub.com/electron/electron/pull/40546) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40657), [27](https://togithub.com/electron/electron/pull/40658), [28](https://togithub.com/electron/electron/pull/40659))</span>
-   Fixed default protocol handler behavior on Windows. [#&#8203;40908](https://togithub.com/electron/electron/pull/40908) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/40909))</span>
-   Fixed file paths passed to `shell.showItemInFolder` not being escaped in Linux. [#&#8203;40527](https://togithub.com/electron/electron/pull/40527) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40560), [27](https://togithub.com/electron/electron/pull/40561), [28](https://togithub.com/electron/electron/pull/40562))</span>
-   Fixed forked child process not able to send IPC message under some cases on macOS. [#&#8203;41102](https://togithub.com/electron/electron/pull/41102) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/41099), [27](https://togithub.com/electron/electron/pull/41100), [28](https://togithub.com/electron/electron/pull/41101))</span>
-   Fixed incorrect title bar shown on frameless transparent windows. [#&#8203;40862](https://togithub.com/electron/electron/pull/40862) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/40868), [28](https://togithub.com/electron/electron/pull/40867))</span>
-   Fixed loading nested ESM dependencies in `node_modules`
    -   Correctly support the `throwIfNoEntry` option in `fs.statSync`/`fs.lstatSync` in asar files. [#&#8203;40221](https://togithub.com/electron/electron/pull/40221) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/40224))</span>
-   Fixed macOS bug that causes window maximize button to be disabled in full-screen mode. [#&#8203;41029](https://togithub.com/electron/electron/pull/41029) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/41027), [28](https://togithub.com/electron/electron/pull/41028))</span>
-   Fixed on-screen-keyboard not hiding for webviews under some cases. [#&#8203;41149](https://togithub.com/electron/electron/pull/41149) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/41151), [28](https://togithub.com/electron/electron/pull/41150))</span>
-   Fixed problem with bounds of maximized window when  toggle BrowserWindow.setResizable function. [#&#8203;40503](https://togithub.com/electron/electron/pull/40503) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40580), [27](https://togithub.com/electron/electron/pull/40581), [28](https://togithub.com/electron/electron/pull/40582))</span>
-   Fixed resizing performance issue on macOS. [#&#8203;40577](https://togithub.com/electron/electron/pull/40577) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40584), [27](https://togithub.com/electron/electron/pull/40585), [28](https://togithub.com/electron/electron/pull/40586))</span>
-   Fixed some redundant permission dialogs while screen sharing on Wayland. [#&#8203;40098](https://togithub.com/electron/electron/pull/40098) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40191), [27](https://togithub.com/electron/electron/pull/40193), [28](https://togithub.com/electron/electron/pull/40192))</span>
-   Fixed the enabled/disabled behavior of the maximize/fullscreen button of macOS windows. [#&#8203;40897](https://togithub.com/electron/electron/pull/40897) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/40895), [28](https://togithub.com/electron/electron/pull/40896))</span>
-   Prevent node mode to be used as script runner by other apps on macOS. [#&#8203;40579](https://togithub.com/electron/electron/pull/40579) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40738), [27](https://togithub.com/electron/electron/pull/40737), [28](https://togithub.com/electron/electron/pull/40710))</span>
-   Unset all Node envs in node process when parent is a foreign process. [#&#8203;40881](https://togithub.com/electron/electron/pull/40881) <span style="font-size:small;">(Also in [26](https://togithub.com/electron/electron/pull/40882), [27](https://togithub.com/electron/electron/pull/40879), [28](https://togithub.com/electron/electron/pull/40880))</span>
-   Use `activateIgnoringOtherApps` for focusing non-panels on macOS. [#&#8203;40570](https://togithub.com/electron/electron/pull/40570) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/40621))</span>

#### Other Changes

-   Re-enabled partition alloc on Mac. [#&#8203;33981](https://togithub.com/electron/electron/pull/33981) <span style="font-size:small;">(Also in [28](https://togithub.com/electron/electron/pull/40230))</span>
-   Reverted new WebContentsView and BaseWindow APIs. [#&#8203;41060](https://togithub.com/electron/electron/pull/41060)
-   Security: backported fix for chromium:1517354. [#&#8203;40969](https://togithub.com/electron/electron/pull/40969)

#### Notices

##### End of Support for 26.x.y

Electron 26.x.y has reached end-of-support as per the project's [support policy](https://www.electronjs.org/docs/latest/tutorial/electron-timelines#version-support-policy). Developers and applications are encouraged to upgrade to a newer version of Electron.

### [`v28.2.3`](https://togithub.com/electron/electron/releases/tag/v28.2.3): electron v28.2.3

[Compare Source](https://togithub.com/electron/electron/compare/v28.2.2...v28.2.3)

### Release Notes for v28.2.3

#### Fixes

-   Fixed a crash that started occurring sporadically with some types of macOS window close. [#&#8203;41298](https://togithub.com/electron/electron/pull/41298) <span style="font-size:small;">(Also in [29](https://togithub.com/electron/electron/pull/41299))</span>
-   Fixed an issue where `webContents.printToPDF` could fail when certain combinations of `margins` and `pageSize` values are passed. [#&#8203;41267](https://togithub.com/electron/electron/pull/41267) <span style="font-size:small;">(Also in [29](https://togithub.com/electron/electron/pull/41266))</span>
-   Fixed an issue where crashes in `node::Environment` destruction potentially wouldn't be propagated to the `NodeService` exit handler. [#&#8203;41302](https://togithub.com/electron/electron/pull/41302) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/41300), [29](https://togithub.com/electron/electron/pull/41301))</span>
-   Fixed an issue where zoom level settings did not persist per-session for webviews. [#&#8203;41268](https://togithub.com/electron/electron/pull/41268) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/41269))</span>

#### Other Changes

-   Updated Chromium to 120.0.6099.283. [#&#8203;41262](https://togithub.com/electron/electron/pull/41262)

### [`v28.2.2`](https://togithub.com/electron/electron/releases/tag/v28.2.2): electron v28.2.2

[Compare Source](https://togithub.com/electron/electron/compare/v28.2.1...v28.2.2)

### Release Notes for v28.2.2

#### Fixes

-   Fixed an issue where `select-usb-device` did not respect the `filter` option in `navigator.usb.requestDevice()`. [#&#8203;41198](https://togithub.com/electron/electron/pull/41198) <span style="font-size:small;">(Also in [27](https://togithub.com/electron/electron/pull/41196), [29](https://togithub.com/electron/electron/pull/41197))</span>

#### Other Changes

-   Security: backported fix for [`1511567`](https://togithub.com/electron/electron/commit/1511567).
    -   Security: backported fix for [`1514777`](https://togithub.com/electron/electron/commit/1514777).
    -   Security: backported fix for [`1511085`](https://togithub.com/electron/electron/commit/1511085).
    -   Security: backported fix for [`1519980`](https://togithub.com/electron/electron/commit/1519980). [#&#8203;41178](https://togithub.com/electron/electron/pull/41178)
-   Updated Chromium to 120.0.6099.276. [#&#8203;41195](https://togithub.com/electron/electron/pull/41195)

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMDAuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIwMC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-20 08:08:38 +00:00
LongYinan
aa3baa60d1 chore: bump up @types/react-datepicker version to v6 (#5839)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@types/react-datepicker](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/react-datepicker) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-datepicker)) | [`^4.19.0` -> `^6.0.0`](https://renovatebot.com/diffs/npm/@types%2freact-datepicker/4.19.3/6.0.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2freact-datepicker/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2freact-datepicker/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2freact-datepicker/4.19.3/6.0.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2freact-datepicker/4.19.3/6.0.1?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 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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMDAuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIwMC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-20 06:27:23 +00:00
LongYinan
b6f776ca24 chore: bump up undici version to v6.6.1 [SECURITY] (#5828)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [undici](https://undici.nodejs.org) ([source](https://togithub.com/nodejs/undici)) | [`6.0.1` -> `6.6.1`](https://renovatebot.com/diffs/npm/undici/6.0.1/6.6.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/undici/6.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/undici/6.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/undici/6.0.1/6.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/undici/6.0.1/6.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

### GitHub Vulnerability Alerts

#### [CVE-2024-24750](https://togithub.com/nodejs/undici/security/advisories/GHSA-9f24-jqhm-jfcw)

### Impact

Calling `fetch(url)` and not consuming the incoming body ((or consuming it very slowing) will lead to a memory leak.

### Patches

Patched in v6.6.1

### Workarounds

Make sure to always consume the incoming body.

#### [CVE-2024-24758](https://togithub.com/nodejs/undici/security/advisories/GHSA-3787-6prv-h9w3)

### Impact

Undici already cleared Authorization headers on cross-origin redirects, but did not clear `Proxy-Authorization` headers.

### Patches

This is patched in v5.28.3 and v6.6.1

### Workarounds

There are no known workarounds.

### References

- https://fetch.spec.whatwg.org/#authentication-entries
- https://github.com/nodejs/undici/security/advisories/GHSA-wqq4-5wpv-mx2g

---

### Release Notes

<details>
<summary>nodejs/undici (undici)</summary>

### [`v6.6.1`](https://togithub.com/nodejs/undici/releases/tag/v6.6.1)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.6.0...v6.6.1)

#### ⚠️ Security Release ⚠️

Details on the vulnerabilities fixed will be shared in the next couple of days.

#### What's Changed

-   fix: flaky debug test by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2687](https://togithub.com/nodejs/undici/pull/2687)
-   build(deps): bump github/codeql-action from 3.22.12 to 3.23.2 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2688](https://togithub.com/nodejs/undici/pull/2688)
-   build(deps): bump actions/dependency-review-action from 3.1.0 to 4.0.0 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2689](https://togithub.com/nodejs/undici/pull/2689)
-   fix: ci pipeline warnings by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2685](https://togithub.com/nodejs/undici/pull/2685)
-   perf: optimize Iterator by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2692](https://togithub.com/nodejs/undici/pull/2692)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.6.0...v6.6.1

### [`v6.6.0`](https://togithub.com/nodejs/undici/releases/tag/v6.6.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.5.0...v6.6.0)

#### What's Changed

-   add webSocket example by [@&#8203;mertcanaltin](https://togithub.com/mertcanaltin) in [https://github.com/nodejs/undici/pull/2626](https://togithub.com/nodejs/undici/pull/2626)
-   chore: remove atomic-sleep as dev dependency by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2648](https://togithub.com/nodejs/undici/pull/2648)
-   chore: remove semver as dev dependency by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2646](https://togithub.com/nodejs/undici/pull/2646)
-   chore: remove table as dev dependency by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2649](https://togithub.com/nodejs/undici/pull/2649)
-   chore: remove delay as dev dependency by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2647](https://togithub.com/nodejs/undici/pull/2647)
-   chore: reduce noise in test-logs test/issue-2349.js by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2655](https://togithub.com/nodejs/undici/pull/2655)
-   chore: fix faketimer warning in test/request-timeout.js by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2656](https://togithub.com/nodejs/undici/pull/2656)
-   chore: reduce noise in test logs test/client-node-max-header-size.js by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2654](https://togithub.com/nodejs/undici/pull/2654)
-   refactor: use fromInnerResponse by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2635](https://togithub.com/nodejs/undici/pull/2635)
-   fix: support deflate raw responses by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2650](https://togithub.com/nodejs/undici/pull/2650)
-   Support building for externally shared js builtins by [@&#8203;mochaaP](https://togithub.com/mochaaP) in [https://github.com/nodejs/undici/pull/2643](https://togithub.com/nodejs/undici/pull/2643)
-   fix: typo clampAndCoarsenConnectionTimingInfo by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2653](https://togithub.com/nodejs/undici/pull/2653)
-   chore: use 'node:'-prefix for requiring node core modules by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2662](https://togithub.com/nodejs/undici/pull/2662)
-   build(deps-dev): bump husky from 8.0.3 to 9.0.7 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2667](https://togithub.com/nodejs/undici/pull/2667)
-   build(deps-dev): bump cronometro from 1.2.0 to 2.0.2 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2668](https://togithub.com/nodejs/undici/pull/2668)
-   remove timers/promises import by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2665](https://togithub.com/nodejs/undici/pull/2665)
-   chore: fix various codesmells by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2669](https://togithub.com/nodejs/undici/pull/2669)
-   chore: remove this alias in agent.js by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2671](https://togithub.com/nodejs/undici/pull/2671)
-   chore: use optional chaining by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2666](https://togithub.com/nodejs/undici/pull/2666)
-   chore: small perf improvements by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2661](https://togithub.com/nodejs/undici/pull/2661)
-   implement spec changes from a while ago by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2676](https://togithub.com/nodejs/undici/pull/2676)
-   websocket: fix close when no closing code is received by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2680](https://togithub.com/nodejs/undici/pull/2680)
-   fix: make ci less flaky by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2684](https://togithub.com/nodejs/undici/pull/2684)

#### New Contributors

-   [@&#8203;mochaaP](https://togithub.com/mochaaP) made their first contribution in [https://github.com/nodejs/undici/pull/2643](https://togithub.com/nodejs/undici/pull/2643)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.5.0...v6.6.0

### [`v6.5.0`](https://togithub.com/nodejs/undici/releases/tag/v6.5.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.4.0...v6.5.0)

#### What's Changed

-   build(deps-dev): bump jsdom from 23.2.0 to 24.0.0 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2632](https://togithub.com/nodejs/undici/pull/2632)
-   feat: Implement EventSource by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2608](https://togithub.com/nodejs/undici/pull/2608)
-   fix: readable body by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2642](https://togithub.com/nodejs/undici/pull/2642)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.4.0...v6.5.0

### [`v6.4.0`](https://togithub.com/nodejs/undici/releases/tag/v6.4.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.3.0...v6.4.0)

##### What's Changed

-   refactor: version cleanup by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2605](https://togithub.com/nodejs/undici/pull/2605)
-   cacheStorage: separate matchAll logic by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2599](https://togithub.com/nodejs/undici/pull/2599)
-   cleanup index by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2598](https://togithub.com/nodejs/undici/pull/2598)
-   feat: port `balanced-pool`, `ca-fingerprint`, `client-abort` tests to `node:test` by [@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki) in [https://github.com/nodejs/undici/pull/2584](https://togithub.com/nodejs/undici/pull/2584)
-   ci: unpin nodejs workflow version by [@&#8203;dominykas](https://togithub.com/dominykas) in [https://github.com/nodejs/undici/pull/2434](https://togithub.com/nodejs/undici/pull/2434)
-   test([#&#8203;2600](https://togithub.com/nodejs/undici/issues/2600)): Flaky debug test by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [https://github.com/nodejs/undici/pull/2607](https://togithub.com/nodejs/undici/pull/2607)
-   fix: h2 hang issue with empty body by [@&#8203;timursevimli](https://togithub.com/timursevimli) in [https://github.com/nodejs/undici/pull/2601](https://togithub.com/nodejs/undici/pull/2601)
-   Fix tests for Node.js v21 by [@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki) in [https://github.com/nodejs/undici/pull/2609](https://togithub.com/nodejs/undici/pull/2609)
-   perf(cache): avoid Request and Response initialization by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2610](https://togithub.com/nodejs/undici/pull/2610)
-   Add more libraries to benchmarks by [@&#8203;mcollina](https://togithub.com/mcollina) in [https://github.com/nodejs/undici/pull/2614](https://togithub.com/nodejs/undici/pull/2614)
-   feat: port `client-connect`, `client-dispatch`, `client-errors` test to `node:test` by [@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki) in [https://github.com/nodejs/undici/pull/2591](https://togithub.com/nodejs/undici/pull/2591)
-   exit with 1 if WPT runner has unexpected errors by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2621](https://togithub.com/nodejs/undici/pull/2621)
-   Fix tests for Node.js v20.11.0 by [@&#8203;mcollina](https://togithub.com/mcollina) in [https://github.com/nodejs/undici/pull/2618](https://togithub.com/nodejs/undici/pull/2618)
-   fix(mock-agent): split set-cookie by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2619](https://togithub.com/nodejs/undici/pull/2619)
-   feat: implement throwOnMaxRedirect option for RedirectHandler by [@&#8203;mertcanaltin](https://togithub.com/mertcanaltin) in [https://github.com/nodejs/undici/pull/2563](https://togithub.com/nodejs/undici/pull/2563)
-   test: fix flaky debug test by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [https://github.com/nodejs/undici/pull/2613](https://togithub.com/nodejs/undici/pull/2613)
-   fix: hide statusOutput if empty in handleRunnerCompletion by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/nodejs/undici/pull/2624](https://togithub.com/nodejs/undici/pull/2624)
-   docs: Fix typo in Debug.md by [@&#8203;Skn0tt](https://togithub.com/Skn0tt) in [https://github.com/nodejs/undici/pull/2625](https://togithub.com/nodejs/undici/pull/2625)
-   fix(cache): set AbortSignal by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2612](https://togithub.com/nodejs/undici/pull/2612)
-   Use correct http Agent for node-fetch, axios, got and request by [@&#8203;mcollina](https://togithub.com/mcollina) in [https://github.com/nodejs/undici/pull/2629](https://togithub.com/nodejs/undici/pull/2629)

##### New Contributors

-   [@&#8203;timursevimli](https://togithub.com/timursevimli) made their first contribution in [https://github.com/nodejs/undici/pull/2601](https://togithub.com/nodejs/undici/pull/2601)
-   [@&#8203;mertcanaltin](https://togithub.com/mertcanaltin) made their first contribution in [https://github.com/nodejs/undici/pull/2563](https://togithub.com/nodejs/undici/pull/2563)
-   [@&#8203;Skn0tt](https://togithub.com/Skn0tt) made their first contribution in [https://github.com/nodejs/undici/pull/2625](https://togithub.com/nodejs/undici/pull/2625)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.3.0...v6.4.0

### [`v6.3.0`](https://togithub.com/nodejs/undici/releases/tag/v6.3.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.2.1...v6.3.0)

#### What's Changed

-   Clear all timeout on destroy and close by [@&#8203;mcollina](https://togithub.com/mcollina) in [https://github.com/nodejs/undici/pull/2535](https://togithub.com/nodejs/undici/pull/2535)
-   ConnectOptions should include 'origin' field by [@&#8203;dvoytenko](https://togithub.com/dvoytenko) in [https://github.com/nodejs/undici/pull/2532](https://togithub.com/nodejs/undici/pull/2532)
-   perf: avoid toLowerCase call by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2537](https://togithub.com/nodejs/undici/pull/2537)
-   revert [`a1a8136`](https://togithub.com/nodejs/undici/commit/a1a8136) by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2539](https://togithub.com/nodejs/undici/pull/2539)
-   docs: add Util to sidebar by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2529](https://togithub.com/nodejs/undici/pull/2529)
-   fix: call explicitly unregister by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2534](https://togithub.com/nodejs/undici/pull/2534)
-   fix: check the content-type of invalid formData by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2541](https://togithub.com/nodejs/undici/pull/2541)
-   Add request examples. by [@&#8203;autopulated](https://togithub.com/autopulated) in [https://github.com/nodejs/undici/pull/2380](https://togithub.com/nodejs/undici/pull/2380)
-   fix(HTTP/2): handle consumption of aborted request by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [https://github.com/nodejs/undici/pull/2387](https://togithub.com/nodejs/undici/pull/2387)
-   chore: update tst test by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2538](https://togithub.com/nodejs/undici/pull/2538)
-   fix(fetch): do not abort fetch on redirect by [@&#8203;angelyan](https://togithub.com/angelyan) in [https://github.com/nodejs/undici/pull/2545](https://togithub.com/nodejs/undici/pull/2545)
-   drop verifyVersion in scripts by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2549](https://togithub.com/nodejs/undici/pull/2549)
-   types: remove unused Client and Pool types by [@&#8203;RafaelGSS](https://togithub.com/RafaelGSS) in [https://github.com/nodejs/undici/pull/2557](https://togithub.com/nodejs/undici/pull/2557)
-   lib: fix Host header when CONNECT ProxyAgent by [@&#8203;RafaelGSS](https://togithub.com/RafaelGSS) in [https://github.com/nodejs/undici/pull/2556](https://togithub.com/nodejs/undici/pull/2556)
-   feat: port cookies tests to node runner by [@&#8203;pmarchini](https://togithub.com/pmarchini) in [https://github.com/nodejs/undici/pull/2547](https://togithub.com/nodejs/undici/pull/2547)
-   feat: port webidl tests to node test runner by [@&#8203;ilteoood](https://togithub.com/ilteoood) in [https://github.com/nodejs/undici/pull/2554](https://togithub.com/nodejs/undici/pull/2554)
-   perf: Improve percentDecode by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2562](https://togithub.com/nodejs/undici/pull/2562)
-   Fix parseHashWithOptions regex by [@&#8203;flapenna](https://togithub.com/flapenna) in [https://github.com/nodejs/undici/pull/2561](https://togithub.com/nodejs/undici/pull/2561)
-   feat: port diagnostic-channel tests to node test runner by [@&#8203;ilteoood](https://togithub.com/ilteoood) in [https://github.com/nodejs/undici/pull/2559](https://togithub.com/nodejs/undici/pull/2559)
-   feat: port websocket tests to node test runner by [@&#8203;ilteoood](https://togithub.com/ilteoood) in [https://github.com/nodejs/undici/pull/2553](https://togithub.com/nodejs/undici/pull/2553)
-   build(deps-dev): bump tsd from 0.29.0 to 0.30.1 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2551](https://togithub.com/nodejs/undici/pull/2551)
-   build(deps): bump actions/setup-node from 4.0.0 to 4.0.1 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2572](https://togithub.com/nodejs/undici/pull/2572)
-   build(deps): bump github/codeql-action from 2.22.5 to 3.22.12 by [@&#8203;dependabot](https://togithub.com/dependabot) in [https://github.com/nodejs/undici/pull/2574](https://togithub.com/nodejs/undici/pull/2574)
-   Update `@matteo.collina/tspl` to 0.1.1 by [@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki) in [https://github.com/nodejs/undici/pull/2576](https://togithub.com/nodejs/undici/pull/2576)
-   mark wpt as failing by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2581](https://togithub.com/nodejs/undici/pull/2581)
-   feat: port `abort-controller.js` tests to `node:test` runner by [@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki) in [https://github.com/nodejs/undici/pull/2564](https://togithub.com/nodejs/undici/pull/2564)
-   fix data url test by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2580](https://togithub.com/nodejs/undici/pull/2580)
-   feat: port `async_hooks.js` tests to `node:test` runner by [@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki) in [https://github.com/nodejs/undici/pull/2568](https://togithub.com/nodejs/undici/pull/2568)
-   feat: port `agent.js` tests to `node:test` runner by [@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki) in [https://github.com/nodejs/undici/pull/2566](https://togithub.com/nodejs/undici/pull/2566)
-   feat: port `abort-event-emitter.js` tests to `node:test` runnner by [@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki) in [https://github.com/nodejs/undici/pull/2565](https://togithub.com/nodejs/undici/pull/2565)
-   feat: port first half of fetch tests to node test runner by [@&#8203;anurag-roy](https://togithub.com/anurag-roy) in [https://github.com/nodejs/undici/pull/2569](https://togithub.com/nodejs/undici/pull/2569)
-   perf: bypass method validation by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2583](https://togithub.com/nodejs/undici/pull/2583)
-   fetch: warn when using patch method by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2577](https://togithub.com/nodejs/undici/pull/2577)
-   feat: port `autoselectfamily.js` tests to `node:test` runner by [@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki) in [https://github.com/nodejs/undici/pull/2570](https://togithub.com/nodejs/undici/pull/2570)
-   feat: port remaining fetch tests to node test runner by [@&#8203;anurag-roy](https://togithub.com/anurag-roy) in [https://github.com/nodejs/undici/pull/2587](https://togithub.com/nodejs/undici/pull/2587)
-   fix: use isArrayBuffer instead of isAnyArrayBuffer by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2586](https://togithub.com/nodejs/undici/pull/2586)
-   Feat/migrate tests to node runner by [@&#8203;pmarchini](https://togithub.com/pmarchini) in [https://github.com/nodejs/undici/pull/2593](https://togithub.com/nodejs/undici/pull/2593)
-   abort request with reason if one is provided by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2592](https://togithub.com/nodejs/undici/pull/2592)
-   feat: port tst test to node test runner by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2595](https://togithub.com/nodejs/undici/pull/2595)
-   feat([#&#8203;2191](https://togithub.com/nodejs/undici/issues/2191)): Add support for `NODE_DEBUG` by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [https://github.com/nodejs/undici/pull/2585](https://togithub.com/nodejs/undici/pull/2585)
-   cacheStorage: fix bugs make wpts pass by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [https://github.com/nodejs/undici/pull/2596](https://togithub.com/nodejs/undici/pull/2596)
-   fix: non-object error in abort throws bad error by [@&#8203;atlowChemi](https://togithub.com/atlowChemi) in [https://github.com/nodejs/undici/pull/2597](https://togithub.com/nodejs/undici/pull/2597)
-   fix: add test helper for closing server as promise by [@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki) in [https://github.com/nodejs/undici/pull/2604](https://togithub.com/nodejs/undici/pull/2604)

#### New Contributors

-   [@&#8203;dvoytenko](https://togithub.com/dvoytenko) made their first contribution in [https://github.com/nodejs/undici/pull/2532](https://togithub.com/nodejs/undici/pull/2532)
-   [@&#8203;autopulated](https://togithub.com/autopulated) made their first contribution in [https://github.com/nodejs/undici/pull/2380](https://togithub.com/nodejs/undici/pull/2380)
-   [@&#8203;angelyan](https://togithub.com/angelyan) made their first contribution in [https://github.com/nodejs/undici/pull/2545](https://togithub.com/nodejs/undici/pull/2545)
-   [@&#8203;pmarchini](https://togithub.com/pmarchini) made their first contribution in [https://github.com/nodejs/undici/pull/2547](https://togithub.com/nodejs/undici/pull/2547)
-   [@&#8203;ilteoood](https://togithub.com/ilteoood) made their first contribution in [https://github.com/nodejs/undici/pull/2554](https://togithub.com/nodejs/undici/pull/2554)
-   [@&#8203;flapenna](https://togithub.com/flapenna) made their first contribution in [https://github.com/nodejs/undici/pull/2561](https://togithub.com/nodejs/undici/pull/2561)
-   [@&#8203;sosukesuzuki](https://togithub.com/sosukesuzuki) made their first contribution in [https://github.com/nodejs/undici/pull/2576](https://togithub.com/nodejs/undici/pull/2576)
-   [@&#8203;anurag-roy](https://togithub.com/anurag-roy) made their first contribution in [https://github.com/nodejs/undici/pull/2569](https://togithub.com/nodejs/undici/pull/2569)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.2.1...v6.3.0

### [`v6.2.1`](https://togithub.com/nodejs/undici/releases/tag/v6.2.1)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.2.0...v6.2.1)

##### What's Changed

-   perf: use tree by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2528](https://togithub.com/nodejs/undici/pull/2528)
-   chore: reduce dependencies by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2533](https://togithub.com/nodejs/undici/pull/2533)
-   Remove timers in agent.js by [@&#8203;mcollina](https://togithub.com/mcollina) in [https://github.com/nodejs/undici/pull/2536](https://togithub.com/nodejs/undici/pull/2536)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.2.0...v6.2.1

### [`v6.2.0`](https://togithub.com/nodejs/undici/releases/tag/v6.2.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.1.0...v6.2.0)

#### What's Changed

-   Remove FinalizationRegistry from Agent by [@&#8203;mcollina](https://togithub.com/mcollina) in [https://github.com/nodejs/undici/pull/2530](https://togithub.com/nodejs/undici/pull/2530)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.1.0...v6.2.0

### [`v6.1.0`](https://togithub.com/nodejs/undici/releases/tag/v6.1.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.0.1...v6.1.0)

#### What's Changed

-   fix: more sensible stack trace from dump error by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2503](https://togithub.com/nodejs/undici/pull/2503)
-   refactor: remove some node compat by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2502](https://togithub.com/nodejs/undici/pull/2502)
-   refactor: version cleanup by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2507](https://togithub.com/nodejs/undici/pull/2507)
-   perf(fetch): Improve fetch of detaurl by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2479](https://togithub.com/nodejs/undici/pull/2479)
-   feat: expose parseHeader by [@&#8203;ronag](https://togithub.com/ronag) in [https://github.com/nodejs/undici/pull/2511](https://togithub.com/nodejs/undici/pull/2511)
-   perf(fetch): optimize call `dispatch` by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2493](https://togithub.com/nodejs/undici/pull/2493)
-   perf(util/parseHeaders): If the header name is buffer by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2501](https://togithub.com/nodejs/undici/pull/2501)
-   perf: twice faster method check by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2495](https://togithub.com/nodejs/undici/pull/2495)
-   refactor: remove Error.captureStackTrace by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2509](https://togithub.com/nodejs/undici/pull/2509)
-   perf: Improve processHeader by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2513](https://togithub.com/nodejs/undici/pull/2513)
-   perf: reduce `String#toLowerCase` call by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2516](https://togithub.com/nodejs/undici/pull/2516)
-   perf: optimize consumeEnd by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2510](https://togithub.com/nodejs/undici/pull/2510)
-   perf: reduce tst built time by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2517](https://togithub.com/nodejs/undici/pull/2517)
-   feat: allow customization of build environment by [@&#8203;khardix](https://togithub.com/khardix) in [https://github.com/nodejs/undici/pull/2403](https://togithub.com/nodejs/undici/pull/2403)
-   fix: clear cache by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2519](https://togithub.com/nodejs/undici/pull/2519)
-   feat: Add resource timing entries for connection, request and response by [@&#8203;ToshB](https://togithub.com/ToshB) in [https://github.com/nodejs/undici/pull/2481](https://togithub.com/nodejs/undici/pull/2481)
-   Call fg.unregister() after a dispatcher is done, adds UNDICI_NO_FG to… by [@&#8203;mcollina](https://togithub.com/mcollina) in [https://github.com/nodejs/undici/pull/2527](https://togithub.com/nodejs/undici/pull/2527)
-   feat: expose headerNameToString by [@&#8203;tsctx](https://togithub.com/tsctx) in [https://github.com/nodejs/undici/pull/2525](https://togithub.com/nodejs/undici/pull/2525)

#### New Contributors

-   [@&#8203;khardix](https://togithub.com/khardix) made their first contribution in [https://github.com/nodejs/undici/pull/2403](https://togithub.com/nodejs/undici/pull/2403)

**Full Changelog**: https://github.com/nodejs/undici/compare/v6.0.1...v6.1.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" (UTC), 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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNzMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIwMC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-20 06:14:08 +00:00
LongYinan
88e5ab061f chore: bump up webpack-dev-server version to v5 (#5819)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [webpack-dev-server](https://togithub.com/webpack/webpack-dev-server) | [`^4.15.1` -> `^5.0.0`](https://renovatebot.com/diffs/npm/webpack-dev-server/4.15.1/5.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/webpack-dev-server/5.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/webpack-dev-server/5.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/webpack-dev-server/4.15.1/5.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/webpack-dev-server/4.15.1/5.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>webpack/webpack-dev-server (webpack-dev-server)</summary>

### [`v5.0.2`](https://togithub.com/webpack/webpack-dev-server/blob/HEAD/CHANGELOG.md#502-2024-02-16)

[Compare Source](https://togithub.com/webpack/webpack-dev-server/compare/v5.0.1...v5.0.2)

### [`v5.0.1`](https://togithub.com/webpack/webpack-dev-server/blob/HEAD/CHANGELOG.md#501-2024-02-13)

[Compare Source](https://togithub.com/webpack/webpack-dev-server/compare/v5.0.0...v5.0.1)

### [`v5.0.0`](https://togithub.com/webpack/webpack-dev-server/blob/HEAD/CHANGELOG.md#500-2024-02-12)

[Compare Source](https://togithub.com/webpack/webpack-dev-server/compare/v4.15.1...v5.0.0)

[Migration Guide and Changes](https://togithub.com/webpack/webpack-dev-server/blob/master/migration-v5.md).

##### [4.15.1](https://togithub.com/webpack/webpack-dev-server/compare/v4.15.0...v4.15.1) (2023-06-09)

##### Bug Fixes

-   replace `::` with `localhost` before openBrowser() ([#&#8203;4856](https://togithub.com/webpack/webpack-dev-server/issues/4856)) ([874c44b](874c44b072))
-   **types:** compatibility with `@types/ws` ([#&#8203;4899](https://togithub.com/webpack/webpack-dev-server/issues/4899)) ([34bcec2](34bcec242b))

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNzMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIwMC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-20 04:39:28 +00:00
LongYinan
18e212b95c chore: bump up linter to v7 (major) (#5820)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/typescript-eslint) ([source](https://togithub.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin)) | [`^6.13.1` -> `^7.0.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2feslint-plugin/6.13.1/7.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2feslint-plugin/7.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2feslint-plugin/7.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2feslint-plugin/6.13.1/7.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2feslint-plugin/6.13.1/7.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |
| [@typescript-eslint/parser](https://togithub.com/typescript-eslint/typescript-eslint) ([source](https://togithub.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser)) | [`^6.13.1` -> `^7.0.0`](https://renovatebot.com/diffs/npm/@typescript-eslint%2fparser/6.13.1/7.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@typescript-eslint%2fparser/7.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typescript-eslint%2fparser/7.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typescript-eslint%2fparser/6.13.1/7.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typescript-eslint%2fparser/6.13.1/7.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/eslint-plugin)</summary>

### [`v7.0.2`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#702-2024-02-19)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v7.0.1...v7.0.2)

##### 🩹 Fixes

-   fix tsconfig-less check errors, fix `@types/eslint` incompatibilities, add tests

##### ❤️  Thank You

-   Brad Zacher
-   Gareth Jones

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v7.0.1`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#701-2024-02-12)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v7.0.0...v7.0.1)

##### 🩹 Fixes

-   **eslint-plugin:** update peer dep for parser

##### ❤️  Thank You

-   Tim Dorr

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v7.0.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#700-2024-02-12)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.21.0...v7.0.0)

##### 🚀 Features

-   ⚠️  bump ESLint, NodeJS, and TS minimum version requirements

-   add support for flat configs

##### 🩹 Fixes

-   **eslint-plugin:** \[prefer-find] stop throwing type errors when converting symbols to numbers

##### ⚠️  Breaking Changes

-   ⚠️  bump ESLint, NodeJS, and TS minimum version requirements

##### ❤️  Thank You

-   Brad Zacher
-   Kirk Waiblinger
-   StyleShit
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### 6.21.0 (2024-02-05)

##### 🚀 Features

-   export plugin metadata

-   allow `parserOptions.project: false`

-   **eslint-plugin:** add rule prefer-find

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unused-vars] don't report on types referenced in export assignment expression

-   **eslint-plugin:** \[switch-exhaustiveness-check] better support for intersections, infinite types, non-union values

-   **eslint-plugin:** \[consistent-type-imports] dont report on types used in export assignment expressions

-   **eslint-plugin:** \[no-unnecessary-condition] handle left-hand optional with exactOptionalPropertyTypes option

-   **eslint-plugin:** \[class-literal-property-style] allow getter when same key setter exists

-   **eslint-plugin:** \[no-unnecessary-type-assertion] provide valid fixes for assertions with extra tokens before `as` keyword

##### ❤️  Thank You

-   auvred
-   Brad Zacher
-   Kirk Waiblinger
-   Pete Gonzalez
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### 6.20.0 (2024-01-29)

##### 🚀 Features

-   **eslint-plugin:** \[member-ordering] allow easy reuse of the default ordering

##### 🩹 Fixes

-   **eslint-plugin:** \[no-useless-template-literals] incorrect bigint autofix result

-   **eslint-plugin:** \[prefer-nullish-coalescing] treat any/unknown as non-nullable

-   **eslint-plugin:** \[no-useless-template-literals] report Infinity & NaN

-   **eslint-plugin:** \[prefer-readonly] disable checking accessors

##### ❤️  Thank You

-   Alex Parloti
-   auvred
-   James Browning
-   StyleShit
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### 6.19.1 (2024-01-22)

##### 🩹 Fixes

-   **type-utils:** preventing isUnsafeAssignment infinite recursive calls

-   **eslint-plugin:** \[no-unnecessary-condition] fix false positive for type variable

##### ❤️  Thank You

-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### 6.19.0 (2024-01-15)

##### 🚀 Features

-   **eslint-plugin:** \[prefer-promise-reject-errors] add rule

-   **eslint-plugin:** \[no-array-delete] add new rule

-   **eslint-plugin:** \[no-useless-template-literals] add fix suggestions

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unnecessary-type-assertion] detect unnecessary non-null-assertion on a call expression

-   **eslint-plugin:** \[no-unnecesary-type-assertion] treat unknown/any as nullable

##### ❤️  Thank You

-   auvred
-   Brad Zacher
-   Josh Goldberg 
-   Joshua Chen
-   LJX
-   Steven
-   StyleShit

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### 6.18.1 (2024-01-08)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-non-null-assertion] provide valid fix when member access is on next line

-   **eslint-plugin:** \[no-unnecessary-condition] improve checking optional callee

-   **eslint-plugin:** \[prefer-readonly] support modifiers of unions and intersections

-   **eslint-plugin:** \[switch-exhaustiveness-check] fix new allowDefaultCaseForExhaustiveSwitch option

##### ❤️  Thank You

-   auvred
-   James
-   Josh Goldberg 
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### 6.18.0 (2024-01-06)

##### 🚀 Features

-   **typescript-estree:** throw on invalid update expressions

-   **eslint-plugin:** \[no-var-requires, no-require-imports] allow option

##### ❤️  Thank You

-   auvred
-   Joshua Chen

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.21.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6210-2024-02-05)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.20.0...v6.21.0)

##### 🚀 Features

-   export plugin metadata

-   allow `parserOptions.project: false`

-   **eslint-plugin:** add rule prefer-find

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unused-vars] don't report on types referenced in export assignment expression

-   **eslint-plugin:** \[switch-exhaustiveness-check] better support for intersections, infinite types, non-union values

-   **eslint-plugin:** \[consistent-type-imports] dont report on types used in export assignment expressions

-   **eslint-plugin:** \[no-unnecessary-condition] handle left-hand optional with exactOptionalPropertyTypes option

-   **eslint-plugin:** \[class-literal-property-style] allow getter when same key setter exists

-   **eslint-plugin:** \[no-unnecessary-type-assertion] provide valid fixes for assertions with extra tokens before `as` keyword

##### ❤️  Thank You

-   auvred
-   Brad Zacher
-   Kirk Waiblinger
-   Pete Gonzalez
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.20.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6200-2024-01-29)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.19.1...v6.20.0)

##### 🚀 Features

-   **eslint-plugin:** \[member-ordering] allow easy reuse of the default ordering

##### 🩹 Fixes

-   **eslint-plugin:** \[no-useless-template-literals] incorrect bigint autofix result

-   **eslint-plugin:** \[prefer-nullish-coalescing] treat any/unknown as non-nullable

-   **eslint-plugin:** \[no-useless-template-literals] report Infinity & NaN

-   **eslint-plugin:** \[prefer-readonly] disable checking accessors

##### ❤️  Thank You

-   Alex Parloti
-   auvred
-   James Browning
-   StyleShit
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.19.1`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6191-2024-01-22)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.19.0...v6.19.1)

##### 🩹 Fixes

-   **type-utils:** preventing isUnsafeAssignment infinite recursive calls

-   **eslint-plugin:** \[no-unnecessary-condition] fix false positive for type variable

##### ❤️  Thank You

-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.19.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6190-2024-01-15)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.18.1...v6.19.0)

##### 🚀 Features

-   **eslint-plugin:** \[prefer-promise-reject-errors] add rule

-   **eslint-plugin:** \[no-array-delete] add new rule

-   **eslint-plugin:** \[no-useless-template-literals] add fix suggestions

##### 🩹 Fixes

-   **eslint-plugin:** \[no-unnecessary-type-assertion] detect unnecessary non-null-assertion on a call expression

-   **eslint-plugin:** \[no-unnecesary-type-assertion] treat unknown/any as nullable

##### ❤️  Thank You

-   auvred
-   Brad Zacher
-   Josh Goldberg 
-   Joshua Chen
-   LJX
-   Steven
-   StyleShit

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.18.1`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6181-2024-01-08)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.18.0...v6.18.1)

##### 🩹 Fixes

-   **eslint-plugin:** \[no-non-null-assertion] provide valid fix when member access is on next line

-   **eslint-plugin:** \[no-unnecessary-condition] improve checking optional callee

-   **eslint-plugin:** \[prefer-readonly] support modifiers of unions and intersections

-   **eslint-plugin:** \[switch-exhaustiveness-check] fix new allowDefaultCaseForExhaustiveSwitch option

##### ❤️  Thank You

-   auvred
-   James
-   Josh Goldberg 
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.18.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6180-2024-01-06)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.17.0...v6.18.0)

##### 🚀 Features

-   **typescript-estree:** throw on invalid update expressions

-   **eslint-plugin:** \[no-var-requires, no-require-imports] allow option

##### ❤️  Thank You

-   auvred
-   Joshua Chen

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.17.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6170-2024-01-01)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.16.0...v6.17.0)

##### Bug Fixes

-   **eslint-plugin:** \[no-restricted-imports] prevent crash when `patterns` or `paths` in options are empty ([#&#8203;8108](https://togithub.com/typescript-eslint/typescript-eslint/issues/8108)) ([675e987](675e987ca1))

##### Features

-   **eslint-plugin:** \[no-floating-promises] flag result of .map(async) ([#&#8203;7897](https://togithub.com/typescript-eslint/typescript-eslint/issues/7897)) ([5857356](5857356962))
-   **eslint-plugin:** \[switch-exhaustiveness-check] add an option to warn against a `default` case on an already exhaustive `switch` ([#&#8203;7539](https://togithub.com/typescript-eslint/typescript-eslint/issues/7539)) ([6a219bd](6a219bdfe6))

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.16.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6160-2023-12-25)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.15.0...v6.16.0)

##### Bug Fixes

-   **eslint-plugin:** \[unbound-method] exempt all non-Promise built-in statics ([#&#8203;8096](https://togithub.com/typescript-eslint/typescript-eslint/issues/8096)) ([3182959](31829591e2))

##### Features

-   **eslint-plugin:** deprecate formatting (meta.type: layout) rules ([#&#8203;8073](https://togithub.com/typescript-eslint/typescript-eslint/issues/8073)) ([04dea84](04dea84e8e))
-   **eslint-plugin:** deprecate no-extra-semi in favor of ESLint Stylistic equivalent ([#&#8203;8123](https://togithub.com/typescript-eslint/typescript-eslint/issues/8123)) ([9368bf3](9368bf390a))

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.15.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6150-2023-12-18)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.14.0...v6.15.0)

##### Features

-   **eslint-plugin:** \[no-useless-template-literals] add new rule ([#&#8203;7957](https://togithub.com/typescript-eslint/typescript-eslint/issues/7957)) ([ff75785](ff75785f4c)), closes [#&#8203;2846](https://togithub.com/typescript-eslint/typescript-eslint/issues/2846)
-   require-array-sort-compare + toSorted ([#&#8203;8052](https://togithub.com/typescript-eslint/typescript-eslint/issues/8052)) ([c9661c8](c9661c8bbf))

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.14.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6140-2023-12-11)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.13.2...v6.14.0)

##### Bug Fixes

-   **eslint-plugin:** add no-unsafe-unary-minus, prefer-destructuring to disable-type-checked ([#&#8203;8038](https://togithub.com/typescript-eslint/typescript-eslint/issues/8038)) ([431cd15](431cd1559f))
-   **eslint-plugin:** correct message for `no-unsafe-unary-minus` ([#&#8203;7998](https://togithub.com/typescript-eslint/typescript-eslint/issues/7998)) ([705370a](705370ac0d))

##### Features

-   **eslint-plugin:** \[explicit-function-return-type] add support for typed class property definitions ([#&#8203;8027](https://togithub.com/typescript-eslint/typescript-eslint/issues/8027)) ([bff47d7](bff47d7885))
-   **eslint-plugin:** \[require-await] allow yielding Promise in async generators ([#&#8203;8003](https://togithub.com/typescript-eslint/typescript-eslint/issues/8003)) ([4c3e704](4c3e704b97))

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### [6.13.2](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.13.1...v6.13.2) (2023-12-04)

**Note:** Version bump only for package [@&#8203;typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin)

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### [6.13.1](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.13.0...v6.13.1) (2023-11-28)

**Note:** Version bump only for package [@&#8203;typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin)

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.13.2`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/eslint-plugin/CHANGELOG.md#6132-2023-12-04)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.13.1...v6.13.2)

**Note:** Version bump only for package [@&#8203;typescript-eslint/eslint-plugin](https://togithub.com/typescript-eslint/eslint-plugin)

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

</details>

<details>
<summary>typescript-eslint/typescript-eslint (@&#8203;typescript-eslint/parser)</summary>

### [`v7.0.2`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#702-2024-02-19)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v7.0.1...v7.0.2)

##### 🩹 Fixes

-   fix tsconfig-less check errors, fix `@types/eslint` incompatibilities, add tests

##### ❤️  Thank You

-   Brad Zacher
-   Gareth Jones

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v7.0.1`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#701-2024-02-12)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v7.0.0...v7.0.1)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v7.0.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#700-2024-02-12)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.21.0...v7.0.0)

##### 🚀 Features

-   ⚠️  bump ESLint, NodeJS, and TS minimum version requirements

-   add support for flat configs

##### ⚠️  Breaking Changes

-   ⚠️  bump ESLint, NodeJS, and TS minimum version requirements

##### ❤️  Thank You

-   Brad Zacher
-   Kirk Waiblinger
-   StyleShit
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### 6.21.0 (2024-02-05)

##### 🚀 Features

-   allow `parserOptions.project: false`

##### ❤️  Thank You

-   auvred
-   Brad Zacher
-   Kirk Waiblinger
-   Pete Gonzalez
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### 6.20.0 (2024-01-29)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### 6.19.1 (2024-01-22)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### 6.19.0 (2024-01-15)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### 6.18.1 (2024-01-08)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### 6.18.0 (2024-01-06)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.21.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6210-2024-02-05)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.20.0...v6.21.0)

##### 🚀 Features

-   allow `parserOptions.project: false`

##### ❤️  Thank You

-   auvred
-   Brad Zacher
-   Kirk Waiblinger
-   Pete Gonzalez
-   YeonJuan

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.20.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6200-2024-01-29)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.19.1...v6.20.0)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.19.1`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6191-2024-01-22)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.19.0...v6.19.1)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.19.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6190-2024-01-15)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.18.1...v6.19.0)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.18.1`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6181-2024-01-08)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.18.0...v6.18.1)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.18.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6180-2024-01-06)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.17.0...v6.18.0)

This was a version bump only for parser to align it with other projects, there were no code changes.

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.17.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6170-2024-01-01)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.16.0...v6.17.0)

**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://togithub.com/typescript-eslint/parser)

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.16.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6160-2023-12-25)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.15.0...v6.16.0)

**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://togithub.com/typescript-eslint/parser)

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.15.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6150-2023-12-18)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.14.0...v6.15.0)

**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://togithub.com/typescript-eslint/parser)

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.14.0`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6140-2023-12-11)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.13.2...v6.14.0)

**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://togithub.com/typescript-eslint/parser)

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### [6.13.2](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.13.1...v6.13.2) (2023-12-04)

**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://togithub.com/typescript-eslint/parser)

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

#### [6.13.1](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.13.0...v6.13.1) (2023-11-28)

**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://togithub.com/typescript-eslint/parser)

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

### [`v6.13.2`](https://togithub.com/typescript-eslint/typescript-eslint/blob/HEAD/packages/parser/CHANGELOG.md#6132-2023-12-04)

[Compare Source](https://togithub.com/typescript-eslint/typescript-eslint/compare/v6.13.1...v6.13.2)

**Note:** Version bump only for package [@&#8203;typescript-eslint/parser](https://togithub.com/typescript-eslint/parser)

You can read about our [versioning strategy](https://main--typescript-eslint.netlify.app/users/versioning) and [releases](https://main--typescript-eslint.netlify.app/users/releases) on our website.

</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 these updates again.

---

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

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNzMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIwMC4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-20 04:14:37 +00:00
DarkSky
fd18732e6e feat: use custom verify token policy (#5836) 2024-02-20 09:47:27 +08:00
liuyi
df157819dc feat(server): allow customize mailer server (#5835) 2024-02-19 14:37:08 +00:00
Peng Xiao
3881164854 build(electron): generate latest-linux.yml (#5822) 2024-02-19 14:25:02 +00:00
Peng Xiao
20f7473e20 fix(electron): linux login issues (#5821)
Looks like there are some issues using `@reforged/maker-appimage`:
- deep link not working properly (cannot login)
- cannot be installed via AppImageLauncher, which is required to enable deep link on linux

I forked saleae/electron-forge-maker-appimage into https://github.com/toeverything/electron-forge-maker-appimage to fix these issues
See changes: https://github.com/saleae/electron-forge-maker-appimage/compare/master...toeverything:electron-forge-maker-appimage:master?w=1

To enable login on Linux, the app must be installed via AppImageLauncher.

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/28dcaadb-49d1-4c95-8a4f-ef41bef604be.png)

fix https://github.com/toeverything/AFFiNE/issues/4978
fix https://github.com/toeverything/AFFiNE/issues/4466
2024-02-19 14:24:59 +00:00
LongYinan
28ee66173e fix: selfhost build (#5833) 2024-02-19 14:03:26 +00:00
DarkSky
d665eaec34 feat: refresh new workspace feature (#5834) 2024-02-19 21:58:54 +08:00
Whitewater
1ceaf87a86 chore: skip sync when offline (#5786) 2024-02-19 10:22:22 +08:00
Peng Xiao
d1c4e6141a refactor(component): cmdk ordering (#5722)
Replace internal CMDK command filtering/sorting logic.
The new implementation includes the following for command scoring:
- categories weights
- highlighted fragments
- original command score value

The new logic should be much cleaner and remove some hacks in the original implementation.

Not sure if this is optimal yet. Could be changed later.

fix https://github.com/toeverything/AFFiNE/issues/5699
2024-02-16 13:20:24 +00:00
LongYinan
9e7eb5629c chore: bump up eslint-plugin-simple-import-sort version to v12 (#5815)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [eslint-plugin-simple-import-sort](https://togithub.com/lydell/eslint-plugin-simple-import-sort) | [`^10.0.0` -> `^12.0.0`](https://renovatebot.com/diffs/npm/eslint-plugin-simple-import-sort/10.0.0/12.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-simple-import-sort/12.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-simple-import-sort/12.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-simple-import-sort/10.0.0/12.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-simple-import-sort/10.0.0/12.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>lydell/eslint-plugin-simple-import-sort (eslint-plugin-simple-import-sort)</summary>

### [`v12.0.0`](https://togithub.com/lydell/eslint-plugin-simple-import-sort/blob/HEAD/CHANGELOG.md#Version-1200-2024-02-10)

[Compare Source](https://togithub.com/lydell/eslint-plugin-simple-import-sort/compare/v11.0.0...v12.0.0)

This release removes the support for import assignments added in version 11.0.0:

-   Turns out it was broken in some cases.
-   The suggested fix went past my complexity tolerance for such an esoteric feature.
-   I also learned that they aren’t really imports, and that I don’t understand their semantics well enough to know how sorting them affects your program.

If you miss the support for import assignments, I suggest you write your own ESLint rule which moves them out of the way from the actual imports, sorting them or not.

### [`v11.0.0`](https://togithub.com/lydell/eslint-plugin-simple-import-sort/blob/HEAD/CHANGELOG.md#Version-1100-2024-02-08)

[Compare Source](https://togithub.com/lydell/eslint-plugin-simple-import-sort/compare/v10.0.0...v11.0.0)

This release adds support for TypeScript import assignments (`import A = B.C` and `import A = require("module")`). Thanks to Szabolcs Kurdi ([@&#8203;szku01](https://togithub.com/szku01)) and Svyatoslav Zaytsev ([@&#8203;MillerSvt](https://togithub.com/MillerSvt))!

It’s only a breaking change if you use TypeScript import assignments, and only in the form that you need to autofix your files.

In other news, this release adds the `meta` plugin property in preparation for ESLint Flat Config, and avoids the deprecated `context.getSourceCode()` method (while still being backwards compatible).

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNzMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjE3My4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-12 17:12:47 +00:00
Ayush Agrawal
5dc7cd336f feat: bump blocksuite (#5817) 2024-02-11 10:23:30 +08:00
Flrande
2e3ffeced9 feat: bump blocksuite (#5812) 2024-02-08 08:18:03 +08:00
LongYinan
a84a91d896 chore: bump up eslint-plugin-unicorn version to v51 (#5810)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [eslint-plugin-unicorn](https://togithub.com/sindresorhus/eslint-plugin-unicorn) | [`^50.0.0` -> `^51.0.0`](https://renovatebot.com/diffs/npm/eslint-plugin-unicorn/50.0.0/51.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-unicorn/51.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-unicorn/51.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-unicorn/50.0.0/51.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-unicorn/50.0.0/51.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>sindresorhus/eslint-plugin-unicorn (eslint-plugin-unicorn)</summary>

### [`v51.0.0`](https://togithub.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v51.0.0)

[Compare Source](https://togithub.com/sindresorhus/eslint-plugin-unicorn/compare/v50.0.1...v51.0.0)

##### Breaking

-   `consistent-destructuring`: Remove from `recommended` preset ([#&#8203;2260](https://togithub.com/sindresorhus/eslint-plugin-unicorn/issues/2260))  [`702d51b`](https://togithub.com/sindresorhus/eslint-plugin-unicorn/commit/702d51b)

##### Improvements

-   `no-array-method-this-argument`: Check `Array.from()` ([#&#8203;2262](https://togithub.com/sindresorhus/eslint-plugin-unicorn/issues/2262))  [`797caee`](https://togithub.com/sindresorhus/eslint-plugin-unicorn/commit/797caee)

##### Fixes

-   `no-thenable`: Fix crash on `{[Symbol.prototype]: 0}` ([#&#8203;2248](https://togithub.com/sindresorhus/eslint-plugin-unicorn/issues/2248))  [`3c7d7c0`](https://togithub.com/sindresorhus/eslint-plugin-unicorn/commit/3c7d7c0)
-   `prefer-prototype-methods`: Fix argument of `isMethodCall` ([#&#8203;2247](https://togithub.com/sindresorhus/eslint-plugin-unicorn/issues/2247))  [`3b504fa`](https://togithub.com/sindresorhus/eslint-plugin-unicorn/commit/3b504fa)

### [`v50.0.1`](https://togithub.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v50.0.1)

[Compare Source](https://togithub.com/sindresorhus/eslint-plugin-unicorn/compare/v50.0.0...v50.0.1)

##### Fixes

-   `no-unnecessary-polyfills`: Fix missing dependency error ([#&#8203;2242](https://togithub.com/sindresorhus/eslint-plugin-unicorn/issues/2242))  [`3df1606`](https://togithub.com/sindresorhus/eslint-plugin-unicorn/commit/3df16068)

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNzMuMCIsInVwZGF0ZWRJblZlciI6IjM3LjE3My4wIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-06 09:42:03 +00:00
Peng Xiao
005c02f148 fix(core): flaky tests (#5804) 2024-02-06 03:20:54 +00:00
Peng Xiao
afccf3d8c9 feat(core): add an option to throttle cpu in e2e (#5803)
To debug e2e flakyness locally
2024-02-06 03:20:49 +00:00
liuyi
296d47f102 refactor(server): separate s3 & r2 storage to plugin (#5805) 2024-02-05 15:10:09 +00:00
DarkSky
25e8a2a22f feat: sync client versioning (#5645)
after this pr, server will only accept client that have some major version
the client version <0.12 will be rejected by the server, >= 0.12 can receive outdated messages and notify users
2024-02-05 08:43:50 +00:00
Peng Xiao
5ca0d65241 test(core): config e2e output dir (#5783) 2024-02-05 04:10:17 +00:00
LongYinan
51680da33b fix(core): prevent data loss (hot-fix) (#5798) (#5800) 2024-02-05 03:53:32 +00:00
liuyi
d9c2dc8dfb fix(server): apply env overrides after all config merged (#5795) 2024-02-04 06:38:31 +00:00
LongYinan
899528dcfd fix(core): load fonts from selfhost url (#5789) 2024-02-02 14:41:06 +00:00
HeJiachen-PM
2ed30a0c2e docs: change community url on README (#5788)
changed community to discord
2024-02-02 10:31:15 +00:00
Joooye_34
514e6f6b80 fix: static resource not found in web server (#5787) 2024-02-02 09:11:31 +00:00
liuyi
bef266ae3b refactor(server): reorganize server configs (#5753) 2024-02-02 08:32:07 +00:00
LongYinan
ee3d195811 chore: bump up jotai-effect version to ^0.5.0 (#5781)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [jotai-effect](https://togithub.com/jotaijs/jotai-effect) | [`^0.4.0` -> `^0.5.0`](https://renovatebot.com/diffs/npm/jotai-effect/0.4.0/0.5.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jotai-effect/0.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jotai-effect/0.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jotai-effect/0.4.0/0.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jotai-effect/0.4.0/0.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>jotaijs/jotai-effect (jotai-effect)</summary>

### [`v0.5.0`](https://togithub.com/jotaijs/jotai-effect/releases/tag/v0.5.0)

[Compare Source](https://togithub.com/jotaijs/jotai-effect/compare/v0.4.0...v0.5.0)

Adds support for reading an atom's value without subscribing to it.

Read atom data without subscribing to changes with `get.peek`.

```ts
const countAtom = atom(0)
atomEffect((get, set) => {
  // will not rerun when countAtom changes
  const count = get.peek(countAtom)
})
```

#### What's Changed

-   feat: get.peek reads atom value without subscribing to updates by [@&#8203;dmaskasky](https://togithub.com/dmaskasky) in [https://github.com/jotaijs/jotai-effect/pull/30](https://togithub.com/jotaijs/jotai-effect/pull/30)

**Full Changelog**: https://github.com/jotaijs/jotai-effect/compare/v0.4.0...v0.5.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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-02 07:16:11 +00:00
LongYinan
4b3808faf9 chore: bump up @vanilla-extract/vite-plugin version to v4 (#5730)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@vanilla-extract/vite-plugin](https://togithub.com/vanilla-extract-css/vanilla-extract) ([source](https://togithub.com/vanilla-extract-css/vanilla-extract/tree/HEAD/packages/vite-plugin)) | [`^3.9.2` -> `^4.0.0`](https://renovatebot.com/diffs/npm/@vanilla-extract%2fvite-plugin/3.9.2/4.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vanilla-extract%2fvite-plugin/4.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vanilla-extract%2fvite-plugin/4.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vanilla-extract%2fvite-plugin/3.9.2/4.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vanilla-extract%2fvite-plugin/3.9.2/4.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>vanilla-extract-css/vanilla-extract (@&#8203;vanilla-extract/vite-plugin)</summary>

### [`v4.0.2`](https://togithub.com/vanilla-extract-css/vanilla-extract/blob/HEAD/packages/vite-plugin/CHANGELOG.md#402)

[Compare Source](https://togithub.com/vanilla-extract-css/vanilla-extract/compare/@vanilla-extract/vite-plugin@4.0.1...@vanilla-extract/vite-plugin@4.0.2)

##### Patch Changes

-   [#&#8203;1304](https://togithub.com/vanilla-extract-css/vanilla-extract/pull/1304) [`545bf82`](545bf82f12) Thanks [@&#8203;fukumasuya](https://togithub.com/fukumasuya)! - Pass Vite `resolve` config to vite-node compiler

    The plugin passes through the project's Vite `resolve` config to the vite-node compiler, which will be used for resolving imports. These options include [`resolve.alias`][resolve.alias], [`resolve.dedupe`][resolve.dedupe], [`resolve.conditions`][resolve.conditions], [`resolve.mainFields`][resolve.mainFields], [`resolve.extensions`][resolve.extensions], and others.

    [`resolve.alias`]: https://vitejs.dev/config/shared-options.html#resolve-alias

    [`resolve.dedupe`]: https://vitejs.dev/config/shared-options.html#resolve-dedupe

    [`resolve.conditions`]: https://vitejs.dev/config/shared-options.html#resolve-conditions

    [`resolve.mainFields`]: https://vitejs.dev/config/shared-options.html#resolve-mainfields

    [`resolve.extensions`]: https://vitejs.dev/config/shared-options.html#resolve-extensions

-   Updated dependencies \[[`545bf82`](545bf82f12)]:
    -   [@&#8203;vanilla-extract/integration](https://togithub.com/vanilla-extract/integration)[@&#8203;6](https://togithub.com/6).5.0

### [`v4.0.1`](https://togithub.com/vanilla-extract-css/vanilla-extract/blob/HEAD/packages/vite-plugin/CHANGELOG.md#401)

[Compare Source](https://togithub.com/vanilla-extract-css/vanilla-extract/compare/@vanilla-extract/vite-plugin@4.0.0...@vanilla-extract/vite-plugin@4.0.1)

##### Patch Changes

-   [#&#8203;1300](https://togithub.com/vanilla-extract-css/vanilla-extract/pull/1300) [`d0b84f6`](d0b84f6340) Thanks [@&#8203;mrm007](https://togithub.com/mrm007)! - Skip loading plugins added by Vitest

-   [#&#8203;1297](https://togithub.com/vanilla-extract-css/vanilla-extract/pull/1297) [`85e1131`](85e11318f0) Thanks [@&#8203;mrm007](https://togithub.com/mrm007)! - Correctly resolve the user's Vite plugins

### [`v4.0.0`](https://togithub.com/vanilla-extract-css/vanilla-extract/blob/HEAD/packages/vite-plugin/CHANGELOG.md#400)

[Compare Source](https://togithub.com/vanilla-extract-css/vanilla-extract/compare/@vanilla-extract/vite-plugin@3.9.5...@vanilla-extract/vite-plugin@4.0.0)

##### Major Changes

-   [#&#8203;1264](https://togithub.com/vanilla-extract-css/vanilla-extract/pull/1264) [`e531c41`](e531c4170d) Thanks [@&#8203;mrm007](https://togithub.com/mrm007)! - The Vite plugin now uses a newer, faster, Vite-based compiler by default.

    The new compiler uses [`vite-node`](https://togithub.com/vitest-dev/vitest/tree/main/packages/vite-node) to parse and extract CSS from `.css.ts` files. This comes with all the benefits of using Vite, faster builds and the ability to use Vite plugins.

    The new compiler has been used in Remix ever since support for Vanilla Extract was introduced.

-   [#&#8203;1264](https://togithub.com/vanilla-extract-css/vanilla-extract/pull/1264) [`e531c41`](e531c4170d) Thanks [@&#8203;mrm007](https://togithub.com/mrm007)! - The behaviour previously known as `emitCssInSsr` has been turned on by default. The `emitCssInSsr` option has been removed.

    This means that the CSS emitted by the plugin is now processed by Vite, so the plugin no longer needs to resolve PostCSS plugins and process the CSS output itself.

-   [#&#8203;1264](https://togithub.com/vanilla-extract-css/vanilla-extract/pull/1264) [`e531c41`](e531c4170d) Thanks [@&#8203;mrm007](https://togithub.com/mrm007)! - The `esbuildOptions` option has been removed as we are no longer using esbuild internally

-   [#&#8203;1264](https://togithub.com/vanilla-extract-css/vanilla-extract/pull/1264) [`e531c41`](e531c4170d) Thanks [@&#8203;mrm007](https://togithub.com/mrm007)! - Drop support for Vite < 4

##### Patch Changes

-   [#&#8203;1264](https://togithub.com/vanilla-extract-css/vanilla-extract/pull/1264) [`e531c41`](e531c4170d) Thanks [@&#8203;mrm007](https://togithub.com/mrm007)! - Update dependencies

-   Updated dependencies \[[`e531c41`](e531c4170d), [`e531c41`](e531c4170d)]:
    -   [@&#8203;vanilla-extract/integration](https://togithub.com/vanilla-extract/integration)[@&#8203;6](https://togithub.com/6).4.0

### [`v3.9.5`](https://togithub.com/vanilla-extract-css/vanilla-extract/blob/HEAD/packages/vite-plugin/CHANGELOG.md#395)

[Compare Source](https://togithub.com/vanilla-extract-css/vanilla-extract/compare/@vanilla-extract/vite-plugin@3.9.4...@vanilla-extract/vite-plugin@3.9.5)

##### Patch Changes

-   [#&#8203;1291](https://togithub.com/vanilla-extract-css/vanilla-extract/pull/1291) [`00af971`](00af9715e5) Thanks [@&#8203;mrm007](https://togithub.com/mrm007)! - Update dependency `@vanilla-extract/integration`

-   [#&#8203;1254](https://togithub.com/vanilla-extract-css/vanilla-extract/pull/1254) [`f373d7f`](f373d7f6b5) Thanks [@&#8203;EvgenNoskov](https://togithub.com/EvgenNoskov)! - Allow hyphens in class names when using a custom identifier

### [`v3.9.4`](https://togithub.com/vanilla-extract-css/vanilla-extract/blob/HEAD/packages/vite-plugin/CHANGELOG.md#394)

[Compare Source](https://togithub.com/vanilla-extract-css/vanilla-extract/compare/@vanilla-extract/vite-plugin@3.9.3...@vanilla-extract/vite-plugin@3.9.4)

##### Patch Changes

-   [#&#8203;1262](https://togithub.com/vanilla-extract-css/vanilla-extract/pull/1262) [`610c50b`](610c50b001) Thanks [@&#8203;mrm007](https://togithub.com/mrm007)! - Update Babel config to target Node.js 14

-   [#&#8203;1262](https://togithub.com/vanilla-extract-css/vanilla-extract/pull/1262) [`610c50b`](610c50b001) Thanks [@&#8203;mrm007](https://togithub.com/mrm007)! - Lazy load Vite to avoid the CJS warning

-   Updated dependencies \[[`610c50b`](610c50b001), [`610c50b`](610c50b001)]:
    -   [@&#8203;vanilla-extract/integration](https://togithub.com/vanilla-extract/integration)[@&#8203;6](https://togithub.com/6).2.5

### [`v3.9.3`](https://togithub.com/vanilla-extract-css/vanilla-extract/blob/HEAD/packages/vite-plugin/CHANGELOG.md#393)

[Compare Source](https://togithub.com/vanilla-extract-css/vanilla-extract/compare/@vanilla-extract/vite-plugin@3.9.2...@vanilla-extract/vite-plugin@3.9.3)

##### Patch Changes

-   [#&#8203;1250](https://togithub.com/vanilla-extract-css/vanilla-extract/pull/1250) [`bc349fd`](bc349fd7cb) Thanks [@&#8203;kosmotema](https://togithub.com/kosmotema)! - Prevent unnecessary module invalidations when using PostCSS

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-02 07:02:22 +00:00
LongYinan
67ab814108 chore: bump up nodemailer version to v6.9.9 [SECURITY] (#5780)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [nodemailer](https://nodemailer.com/) ([source](https://togithub.com/nodemailer/nodemailer)) | [`6.9.7` -> `6.9.9`](https://renovatebot.com/diffs/npm/nodemailer/6.9.7/6.9.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nodemailer/6.9.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nodemailer/6.9.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nodemailer/6.9.7/6.9.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nodemailer/6.9.7/6.9.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

### GitHub Vulnerability Alerts

#### [GHSA-9h6g-pr28-7cqp](https://togithub.com/nodemailer/nodemailer/security/advisories/GHSA-9h6g-pr28-7cqp)

### Summary
A ReDoS vulnerability occurs when nodemailer tries to parse img files with the parameter `attachDataUrls` set, causing the stuck of event loop.
Another flaw was found when nodemailer tries to parse an attachments with a embedded file, causing the stuck of event loop.

### Details

Regex: /^data:((?:[^;]*;)*(?:[^,]*)),(.*)$/

Path: compile -> getAttachments -> _processDataUrl

Regex: /(<img\b[^>]* src\s*=[\s"']*)(data:([^;]+);[^"'>\s]+)/

Path: _convertDataImages

### PoC

https://gist.github.com/francoatmega/890dd5053375333e40c6fdbcc8c58df6
https://gist.github.com/francoatmega/9aab042b0b24968d7b7039818e8b2698

### Impact

ReDoS causes the event loop to stuck a specially crafted evil email can cause this problem.

---

### Release Notes

<details>
<summary>nodemailer/nodemailer (nodemailer)</summary>

### [`v6.9.9`](https://togithub.com/nodemailer/nodemailer/blob/HEAD/CHANGELOG.md#699-2024-02-01)

[Compare Source](https://togithub.com/nodemailer/nodemailer/compare/v6.9.8...v6.9.9)

##### Bug Fixes

-   **security:** Fix issues described in GHSA-9h6g-pr28-7cqp. Do not use eternal matching pattern if only a few occurences are expected ([dd8f5e8](dd8f5e8a4d))
-   **tests:** Use native node test runner, added code coverage support, removed grunt ([#&#8203;1604](https://togithub.com/nodemailer/nodemailer/issues/1604)) ([be45c1b](be45c1b299))

### [`v6.9.8`](https://togithub.com/nodemailer/nodemailer/blob/HEAD/CHANGELOG.md#698-2023-12-30)

[Compare Source](https://togithub.com/nodemailer/nodemailer/compare/v6.9.7...v6.9.8)

##### Bug Fixes

-   **punycode:** do not use native punycode module ([b4d0e0c](b4d0e0c7cc))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" (UTC), 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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-02 05:53:44 +00:00
LongYinan
d23f8f8087 ci: fix test-done job condition (#5784) 2024-02-02 05:21:59 +00:00
LongYinan
8f4b4e20ab fix(core): typecheck after jotai upgraded (#5779) 2024-02-01 16:10:14 +00:00
LongYinan
45b5800a23 chore: bump up all non-major dependencies (#5550)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type | Update |
|---|---|---|---|---|---|---|---|
| [@aws-sdk/client-s3](https://togithub.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3) ([source](https://togithub.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3)) | [`3.499.0` -> `3.504.0`](https://renovatebot.com/diffs/npm/@aws-sdk%2fclient-s3/3.499.0/3.504.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@aws-sdk%2fclient-s3/3.504.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@aws-sdk%2fclient-s3/3.504.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@aws-sdk%2fclient-s3/3.499.0/3.504.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@aws-sdk%2fclient-s3/3.499.0/3.504.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@marsidev/react-turnstile](https://togithub.com/marsidev/react-turnstile) | [`^0.4.0` -> `^0.5.0`](https://renovatebot.com/diffs/npm/@marsidev%2freact-turnstile/0.4.0/0.5.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@marsidev%2freact-turnstile/0.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@marsidev%2freact-turnstile/0.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@marsidev%2freact-turnstile/0.4.0/0.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@marsidev%2freact-turnstile/0.4.0/0.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@napi-rs/cli](https://togithub.com/napi-rs/napi-rs) | [`3.0.0-alpha.33` -> `3.0.0-alpha.36`](https://renovatebot.com/diffs/npm/@napi-rs%2fcli/3.0.0-alpha.33/3.0.0-alpha.36) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@napi-rs%2fcli/3.0.0-alpha.36?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@napi-rs%2fcli/3.0.0-alpha.36?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@napi-rs%2fcli/3.0.0-alpha.33/3.0.0-alpha.36?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@napi-rs%2fcli/3.0.0-alpha.33/3.0.0-alpha.36?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [@node-rs/jsonwebtoken](https://togithub.com/napi-rs/node-rs) | [`^0.3.0` -> `^0.4.0`](https://renovatebot.com/diffs/npm/@node-rs%2fjsonwebtoken/0.3.1/0.4.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@node-rs%2fjsonwebtoken/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@node-rs%2fjsonwebtoken/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@node-rs%2fjsonwebtoken/0.3.1/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@node-rs%2fjsonwebtoken/0.3.1/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@nx/vite](https://nx.dev) ([source](https://togithub.com/nrwl/nx/tree/HEAD/packages/vite)) | [`17.2.8` -> `17.3.1`](https://renovatebot.com/diffs/npm/@nx%2fvite/17.2.8/17.3.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@nx%2fvite/17.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nx%2fvite/17.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nx%2fvite/17.2.8/17.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nx%2fvite/17.2.8/17.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@opentelemetry/exporter-prometheus](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.47.0` -> `^0.48.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fexporter-prometheus/0.47.0/0.48.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fexporter-prometheus/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fexporter-prometheus/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fexporter-prometheus/0.47.0/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fexporter-prometheus/0.47.0/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/host-metrics](https://togithub.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/opentelemetry-host-metrics#readme) ([source](https://togithub.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.34.0` -> `^0.35.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fhost-metrics/0.34.1/0.35.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fhost-metrics/0.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fhost-metrics/0.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fhost-metrics/0.34.1/0.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fhost-metrics/0.34.1/0.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.47.0` -> `^0.48.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation/0.47.0/0.48.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation/0.47.0/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation/0.47.0/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-graphql](https://togithub.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-graphql#readme) ([source](https://togithub.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.36.0` -> `^0.37.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-graphql/0.36.1/0.37.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-graphql/0.37.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-graphql/0.37.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-graphql/0.36.1/0.37.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-graphql/0.36.1/0.37.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-http](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.47.0` -> `^0.48.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-http/0.47.0/0.48.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-http/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-http/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-http/0.47.0/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-http/0.47.0/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-ioredis](https://togithub.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-ioredis#readme) ([source](https://togithub.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.36.0` -> `^0.37.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-ioredis/0.36.1/0.37.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-ioredis/0.37.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-ioredis/0.37.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-ioredis/0.36.1/0.37.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-ioredis/0.36.1/0.37.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-nestjs-core](https://togithub.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/opentelemetry-instrumentation-nestjs-core#readme) ([source](https://togithub.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.33.3` -> `^0.34.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-nestjs-core/0.33.4/0.34.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-nestjs-core/0.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-nestjs-core/0.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-nestjs-core/0.33.4/0.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-nestjs-core/0.33.4/0.34.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/instrumentation-socket.io](https://togithub.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/node/instrumentation-socket.io#readme) ([source](https://togithub.com/open-telemetry/opentelemetry-js-contrib)) | [`^0.35.0` -> `^0.36.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2finstrumentation-socket.io/0.35.0/0.36.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2finstrumentation-socket.io/0.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2finstrumentation-socket.io/0.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2finstrumentation-socket.io/0.35.0/0.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2finstrumentation-socket.io/0.35.0/0.36.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@opentelemetry/sdk-node](https://togithub.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-sdk-node) ([source](https://togithub.com/open-telemetry/opentelemetry-js)) | [`^0.47.0` -> `^0.48.0`](https://renovatebot.com/diffs/npm/@opentelemetry%2fsdk-node/0.47.0/0.48.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@opentelemetry%2fsdk-node/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@opentelemetry%2fsdk-node/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@opentelemetry%2fsdk-node/0.47.0/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@opentelemetry%2fsdk-node/0.47.0/0.48.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [@taplo/cli](https://taplo.tamasfe.dev) ([source](https://togithub.com/tamasfe/taplo)) | [`^0.5.2` -> `^0.7.0`](https://renovatebot.com/diffs/npm/@taplo%2fcli/0.5.2/0.7.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@taplo%2fcli/0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@taplo%2fcli/0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@taplo%2fcli/0.5.2/0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@taplo%2fcli/0.5.2/0.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@vitest/coverage-istanbul](https://togithub.com/vitest-dev/vitest/tree/main/packages/coverage-istanbul#readme) ([source](https://togithub.com/vitest-dev/vitest/tree/HEAD/packages/coverage-istanbul)) | [`1.1.3` -> `1.2.2`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-istanbul/1.1.3/1.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fcoverage-istanbul/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fcoverage-istanbul/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fcoverage-istanbul/1.1.3/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fcoverage-istanbul/1.1.3/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [@vitest/ui](https://togithub.com/vitest-dev/vitest/tree/main/packages/ui#readme) ([source](https://togithub.com/vitest-dev/vitest/tree/HEAD/packages/ui)) | [`1.1.3` -> `1.2.2`](https://renovatebot.com/diffs/npm/@vitest%2fui/1.1.3/1.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fui/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@vitest%2fui/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@vitest%2fui/1.1.3/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fui/1.1.3/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [cloudflare/wrangler-action](https://togithub.com/cloudflare/wrangler-action) | `v3.4.0` -> `v3.4.1` | [![age](https://developer.mend.io/api/mc/badges/age/github-tags/cloudflare%2fwrangler-action/v3.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/github-tags/cloudflare%2fwrangler-action/v3.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/github-tags/cloudflare%2fwrangler-action/v3.4.0/v3.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/cloudflare%2fwrangler-action/v3.4.0/v3.4.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | action | patch |
| [esbuild](https://togithub.com/evanw/esbuild) | [`^0.19.7` -> `^0.20.0`](https://renovatebot.com/diffs/npm/esbuild/0.19.8/0.20.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/esbuild/0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/esbuild/0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/esbuild/0.19.8/0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/esbuild/0.19.8/0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [jotai-effect](https://togithub.com/jotaijs/jotai-effect) | [`^0.2.3` -> `^0.4.0`](https://renovatebot.com/diffs/npm/jotai-effect/0.2.3/0.4.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jotai-effect/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jotai-effect/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jotai-effect/0.2.3/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jotai-effect/0.2.3/0.4.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| [jotai-scope](https://togithub.com/jotaijs/jotai-scope) | [`^0.4.1` -> `^0.5.0`](https://renovatebot.com/diffs/npm/jotai-scope/0.4.1/0.5.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/jotai-scope/0.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/jotai-scope/0.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/jotai-scope/0.4.1/0.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/jotai-scope/0.4.1/0.5.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | dependencies | minor |
| openresty/openresty | `1.21.4.3-0-buster` -> `1.25.3.1-0-buster` | [![age](https://developer.mend.io/api/mc/badges/age/docker/openresty%2fopenresty/1.25.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/openresty%2fopenresty/1.25.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/openresty%2fopenresty/1.21.4.3/1.25.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/openresty%2fopenresty/1.21.4.3/1.25.3.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | final | minor |
| [vite-plugin-dts](https://togithub.com/qmhc/vite-plugin-dts) | [`3.7.0` -> `3.7.2`](https://renovatebot.com/diffs/npm/vite-plugin-dts/3.7.0/3.7.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vite-plugin-dts/3.7.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite-plugin-dts/3.7.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite-plugin-dts/3.7.0/3.7.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite-plugin-dts/3.7.0/3.7.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | patch |
| [vitest](https://togithub.com/vitest-dev/vitest) ([source](https://togithub.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`1.1.3` -> `1.2.2`](https://renovatebot.com/diffs/npm/vitest/1.1.3/1.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/1.1.3/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/1.1.3/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | devDependencies | minor |
| [yarn](https://togithub.com/yarnpkg/berry) ([source](https://togithub.com/yarnpkg/berry/tree/HEAD/packages/yarnpkg-cli)) | [`4.0.2` -> `4.1.0`](https://renovatebot.com/diffs/npm/yarn/4.0.2/4.1.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/yarn/4.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/yarn/4.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/yarn/4.0.2/4.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/yarn/4.0.2/4.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | packageManager | minor |

---

### Release Notes

<details>
<summary>aws/aws-sdk-js-v3 (@&#8203;aws-sdk/client-s3)</summary>

### [`v3.504.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35040-2024-01-31)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.503.1...v3.504.0)

**Note:** Version bump only for package [@&#8203;aws-sdk/client-s3](https://togithub.com/aws-sdk/client-s3)

#### [3.503.1](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.503.0...v3.503.1) (2024-01-30)

**Note:** Version bump only for package [@&#8203;aws-sdk/client-s3](https://togithub.com/aws-sdk/client-s3)

### [`v3.503.1`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35031-2024-01-30)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.503.0...v3.503.1)

**Note:** Version bump only for package [@&#8203;aws-sdk/client-s3](https://togithub.com/aws-sdk/client-s3)

### [`v3.503.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35030-2024-01-30)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.502.0...v3.503.0)

**Note:** Version bump only for package [@&#8203;aws-sdk/client-s3](https://togithub.com/aws-sdk/client-s3)

### [`v3.502.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35020-2024-01-29)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.501.0...v3.502.0)

##### Features

-   **credential-providers:** lazy load STS & SSO clients in credential providers ([#&#8203;5681](https://togithub.com/aws/aws-sdk-js-v3/issues/5681)) ([d27301d](d27301d48f))

### [`v3.501.0`](https://togithub.com/aws/aws-sdk-js-v3/blob/HEAD/clients/client-s3/CHANGELOG.md#35010-2024-01-26)

[Compare Source](https://togithub.com/aws/aws-sdk-js-v3/compare/v3.499.0...v3.501.0)

**Note:** Version bump only for package [@&#8203;aws-sdk/client-s3](https://togithub.com/aws-sdk/client-s3)

</details>

<details>
<summary>marsidev/react-turnstile (@&#8203;marsidev/react-turnstile)</summary>

### [`v0.5.1`](https://togithub.com/marsidev/react-turnstile/releases/tag/v0.5.1)

[Compare Source](https://togithub.com/marsidev/react-turnstile/compare/v0.5.0...v0.5.1)

#####    🐞 Bug Fixes

-   Remove nullish coalescing operator (`??`) to improve compatibility with old browsers  -  by [@&#8203;marsidev](https://togithub.com/marsidev) [<samp>(80f61)</samp>](https://togithub.com/marsidev/react-turnstile/commit/80f61c6)

#####     [View changes on GitHub](https://togithub.com/marsidev/react-turnstile/compare/v0.5.0...v0.5.1)

### [`v0.5.0`](https://togithub.com/marsidev/react-turnstile/releases/tag/v0.5.0)

[Compare Source](https://togithub.com/marsidev/react-turnstile/compare/v0.4.1...v0.5.0)

#####    🚀 Features

-   Add `getResponsePromise`  -  by [@&#8203;marsidev](https://togithub.com/marsidev) [<samp>(61308)</samp>](https://togithub.com/marsidev/react-turnstile/commit/6130898)

#####     [View changes on GitHub](https://togithub.com/marsidev/react-turnstile/compare/v0.4.1...v0.5.0)

### [`v0.4.1`](https://togithub.com/marsidev/react-turnstile/releases/tag/v0.4.1)

[Compare Source](https://togithub.com/marsidev/react-turnstile/compare/v0.4.0...v0.4.1)

#####    🚀 Features

-   Add `onWidgetLoad` callback  -  by [@&#8203;marsidev](https://togithub.com/marsidev) [<samp>(6811b)</samp>](https://togithub.com/marsidev/react-turnstile/commit/6811bce)

#####     [View changes on GitHub](https://togithub.com/marsidev/react-turnstile/compare/v0.4.0...v0.4.1)

</details>

<details>
<summary>napi-rs/napi-rs (@&#8203;napi-rs/cli)</summary>

### [`v3.0.0-alpha.36`](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.35...@napi-rs/cli@3.0.0-alpha.36)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.35...@napi-rs/cli@3.0.0-alpha.36)

### [`v3.0.0-alpha.35`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.35)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.34...@napi-rs/cli@3.0.0-alpha.35)

##### What's Changed

-   chore: bump memfs-browser by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1900](https://togithub.com/napi-rs/napi-rs/pull/1900)
-   feat(cli): Add support for s390x linux arch in js bindings template by [@&#8203;mgcm](https://togithub.com/mgcm) in [https://github.com/napi-rs/napi-rs/pull/1901](https://togithub.com/napi-rs/napi-rs/pull/1901)
-   feat: add wasm runtime package by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1904](https://togithub.com/napi-rs/napi-rs/pull/1904)

##### New Contributors

-   [@&#8203;mgcm](https://togithub.com/mgcm) made their first contribution in [https://github.com/napi-rs/napi-rs/pull/1901](https://togithub.com/napi-rs/napi-rs/pull/1901)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.34...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.35

### [`v3.0.0-alpha.34`](https://togithub.com/napi-rs/napi-rs/releases/tag/%40napi-rs/cli%403.0.0-alpha.34)

[Compare Source](https://togithub.com/napi-rs/napi-rs/compare/@napi-rs/cli@3.0.0-alpha.33...@napi-rs/cli@3.0.0-alpha.34)

##### What's Changed

-   fix(cli): add browser entry by [@&#8203;Brooooooklyn](https://togithub.com/Brooooooklyn) in [https://github.com/napi-rs/napi-rs/pull/1899](https://togithub.com/napi-rs/napi-rs/pull/1899)

**Full Changelog**: https://github.com/napi-rs/napi-rs/compare/[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.33...[@&#8203;napi-rs/cli](https://togithub.com/napi-rs/cli)[@&#8203;3](https://togithub.com/3).0.0-alpha.34

</details>

<details>
<summary>napi-rs/node-rs (@&#8203;node-rs/jsonwebtoken)</summary>

### [`v0.4.0`](https://togithub.com/napi-rs/node-rs/compare/@node-rs/jsonwebtoken@0.3.1...@node-rs/jsonwebtoken@0.4.0)

[Compare Source](https://togithub.com/napi-rs/node-rs/compare/@node-rs/jsonwebtoken@0.3.1...@node-rs/jsonwebtoken@0.4.0)

</details>

<details>
<summary>nrwl/nx (@&#8203;nx/vite)</summary>

### [`v17.3.1`](https://togithub.com/nrwl/nx/releases/tag/17.3.1)

[Compare Source](https://togithub.com/nrwl/nx/compare/17.3.0...17.3.1)

##### 17.3.1 (2024-01-31)

##### 🚀 Features

-   **angular:** add generator to convert targets to use the esbuild-based application executor ([#&#8203;21333](https://togithub.com/nrwl/nx/pull/21333))
-   **core:** don't clear NX_BASE or NX_HEAD ([#&#8203;20125](https://togithub.com/nrwl/nx/pull/20125))
-   **devkit:** improving error handeling read target options ([#&#8203;20336](https://togithub.com/nrwl/nx/pull/20336))
-   **react-native:** add useTransformReactJSX babel config to generators ([#&#8203;19170](https://togithub.com/nrwl/nx/pull/19170))
-   **vite:** allow passing path to custom tsconfig file when skipTypeCheck is false ([#&#8203;19784](https://togithub.com/nrwl/nx/pull/19784))

##### 🩹 Fixes

-   nestjs lib generator pass skipPackageJson flag to js lib generator ([#&#8203;20442](https://togithub.com/nrwl/nx/pull/20442))
-   **angular:** fix dev-server validation for esbuildMiddleware ([#&#8203;21413](https://togithub.com/nrwl/nx/pull/21413))
-   **angular:** should not log invalid extension includedScripts ([#&#8203;21441](https://togithub.com/nrwl/nx/pull/21441))
-   **bundling:** consider index/folder imports in manual file resolution ([#&#8203;19030](https://togithub.com/nrwl/nx/pull/19030))
-   **core:** remove misleading message at front of error ([#&#8203;21443](https://togithub.com/nrwl/nx/pull/21443))
-   **core:** new generator not skipping package installation ([#&#8203;17927](https://togithub.com/nrwl/nx/pull/17927))
-   **core:** include typescript package when calculating project hashes ([#&#8203;21285](https://togithub.com/nrwl/nx/pull/21285))
-   **core:** do not append node_module paths in `run-script` executor ([#&#8203;21445](https://togithub.com/nrwl/nx/pull/21445))
-   **graph:** repair externalApiService usage broken after refactor ([#&#8203;21422](https://togithub.com/nrwl/nx/pull/21422))
-   **js:** allow inlined libs without imports ([#&#8203;20649](https://togithub.com/nrwl/nx/pull/20649))
-   **linter:** remove extend of [@&#8203;angular-eslint/recommended--extra](https://togithub.com/angular-eslint/recommended--extra) config ([#&#8203;18465](https://togithub.com/nrwl/nx/pull/18465))
-   **linter:** restore rules to match previous [@&#8203;typescript-eslint/recommended](https://togithub.com/typescript-eslint/recommended) ([#&#8203;21424](https://togithub.com/nrwl/nx/pull/21424))
-   **linter:** make target default migrations a bit more robust ([#&#8203;21446](https://togithub.com/nrwl/nx/pull/21446))
-   **misc:** prevent ts-node from reading tsconfig when registering transpiler ([#&#8203;21381](https://togithub.com/nrwl/nx/pull/21381))
-   **nextjs:** Add missing support swc for custom server ([#&#8203;21401](https://togithub.com/nrwl/nx/pull/21401))
-   **nextjs:** lazy load plugin import ([#&#8203;21426](https://togithub.com/nrwl/nx/pull/21426))
-   **nx-dev:** remove unmatched bracket. updates warning description ([#&#8203;19481](https://togithub.com/nrwl/nx/pull/19481))
-   **react:** import SupportedStyles type from correct path ([#&#8203;20239](https://togithub.com/nrwl/nx/pull/20239))
-   **vite:** prevent vite:build copying package.json when generatePackageJson false ([#&#8203;19780](https://togithub.com/nrwl/nx/pull/19780))
-   **vue:** do not add [@&#8203;vue/tsconfig](https://togithub.com/vue/tsconfig) dependency ([#&#8203;19873](https://togithub.com/nrwl/nx/pull/19873))

##### ❤️  Thank You

-   Adam Hunter [@&#8203;adamrhunter](https://togithub.com/adamrhunter)
-   Benjamin Kroeger [@&#8203;benkroeger](https://togithub.com/benkroeger)
-   Christian Käslin
-   Craigory Coppola [@&#8203;AgentEnder](https://togithub.com/AgentEnder)
-   Denis Frenademetz [@&#8203;skrtheboss](https://togithub.com/skrtheboss)
-   James Henry [@&#8203;JamesHenry](https://togithub.com/JamesHenry)
-   Jan Pretzel
-   Jonathan Cammisuli
-   Leosvel Pérez Espinosa [@&#8203;leosvelperez](https://togithub.com/leosvelperez)
-   MaxKless [@&#8203;MaxKless](https://togithub.com/MaxKless)
-   Michal Jez [@&#8203;MJez29](https://togithub.com/MJez29)
-   Miloš Lajtman [@&#8203;miluoshi](https://togithub.com/miluoshi)
-   Nicholas Cunningham [@&#8203;ndcunningham](https://togithub.com/ndcunningham)
-   Tobbb
-   Vinit Neogi [@&#8203;vneogi199](https://togithub.com/vneogi199)
-   wout junius [@&#8203;wout-junius](https://togithub.com/wout-junius)
-   Zac Bristow

### [`v17.3.0`](https://togithub.com/nrwl/nx/releases/tag/17.3.0)

[Compare Source](https://togithub.com/nrwl/nx/compare/17.2.8...17.3.0)

#### 17.3.0 (2024-01-29)

##### 🚀 Features

-   **angular:** support esbuild middleware functions ([#&#8203;21048](https://togithub.com/nrwl/nx/pull/21048))
-   **angular:** support angular 17.1.0 ([#&#8203;20556](https://togithub.com/nrwl/nx/pull/20556))
-   **core:** remove prompt from nx connect command ([67b5bd6c9f](https://togithub.com/nrwl/nx/commit/67b5bd6c9f))
-   **core:** use Nx plugins and inferred targets when running "nx init" ([#&#8203;20872](https://togithub.com/nrwl/nx/pull/20872))
-   **core:** create a new function to run child processes via rust ([#&#8203;21070](https://togithub.com/nrwl/nx/pull/21070))
-   **core:** read name from package.json if present and no inference plugin provides name ([#&#8203;21125](https://togithub.com/nrwl/nx/pull/21125))
-   **core:** add keepExistingVersions to all packages ([#&#8203;21169](https://togithub.com/nrwl/nx/pull/21169))
-   **core:** add the "add" cli command ([#&#8203;20976](https://togithub.com/nrwl/nx/pull/20976))
-   **core:** add target defaults in configuration generators rather th… ([#&#8203;21105](https://togithub.com/nrwl/nx/pull/21105))
-   **core:** update ci-workflow generator ([#&#8203;21141](https://togithub.com/nrwl/nx/pull/21141))
-   **core:** extend nxCloud prompt to include basic CI workflow options ([#&#8203;21094](https://togithub.com/nrwl/nx/pull/21094))
-   **core:** move target defaults handling to nx plugin ([#&#8203;21104](https://togithub.com/nrwl/nx/pull/21104))
-   **core:** forward stdin to commands started via rust ([#&#8203;21195](https://togithub.com/nrwl/nx/pull/21195))
-   **core:** reveal --web flag on show project ([#&#8203;21293](https://togithub.com/nrwl/nx/pull/21293))
-   **core:** use runCommand for runScript ([#&#8203;21292](https://togithub.com/nrwl/nx/pull/21292))
-   **core:** support args to be an array for command ([#&#8203;21290](https://togithub.com/nrwl/nx/pull/21290))
-   **core:** improve generated CI workflows ([#&#8203;21324](https://togithub.com/nrwl/nx/pull/21324))
-   **core:** guide users to view the graph after nx init ([#&#8203;21303](https://togithub.com/nrwl/nx/pull/21303))
-   **core:** pass down help to run-commands ([#&#8203;21331](https://togithub.com/nrwl/nx/pull/21331))
-   **cypress:** simplify inferred cypress command ([#&#8203;21337](https://togithub.com/nrwl/nx/pull/21337))
-   **detox:** add createNodes for detox ([#&#8203;21016](https://togithub.com/nrwl/nx/pull/21016))
-   **devkit:** add a flag to keep existing versions when calling addDependenciesToPackageJson ([#&#8203;21123](https://togithub.com/nrwl/nx/pull/21123))
-   **docs:** add {% project-details %} as a tag in markdown docs ([#&#8203;21288](https://togithub.com/nrwl/nx/pull/21288))
-   **expo:** support createNodes for expo ([#&#8203;21014](https://togithub.com/nrwl/nx/pull/21014))
-   **graph:** add nx console data loader ([#&#8203;20744](https://togithub.com/nrwl/nx/pull/20744))
-   **graph:** rework pdv target section & remove unused code ([#&#8203;21159](https://togithub.com/nrwl/nx/pull/21159))
-   **graph:** decouple graph client from nx.dev <Fence> component ([#&#8203;21186](https://togithub.com/nrwl/nx/pull/21186))
-   **graph:** allow expanding target when opening pdv from external api ([#&#8203;21189](https://togithub.com/nrwl/nx/pull/21189))
-   **graph:** hover to see source & more UI updates ([#&#8203;21182](https://togithub.com/nrwl/nx/pull/21182))
-   **graph:** add tooltips to project details view ([#&#8203;21205](https://togithub.com/nrwl/nx/pull/21205))
-   **graph:** show open config button in graph web ([#&#8203;21181](https://togithub.com/nrwl/nx/pull/21181))
-   **linter:** add .nx to ignored folders ([#&#8203;20720](https://togithub.com/nrwl/nx/pull/20720))
-   **linter:** update @&#8203;typescript-eslint/\* package versions ([#&#8203;20602](https://togithub.com/nrwl/nx/pull/20602))
-   **linter:** make init generator public ([51c039b252](https://togithub.com/nrwl/nx/commit/51c039b252))
-   **linter:** move common options to target defaults ([#&#8203;20583](https://togithub.com/nrwl/nx/pull/20583))
-   **misc:** align version of [@&#8203;types/node](https://togithub.com/types/node) throughout repo ([#&#8203;20883](https://togithub.com/nrwl/nx/pull/20883))
-   **misc:** add layout for project details view ([#&#8203;21172](https://togithub.com/nrwl/nx/pull/21172))
-   **misc:** update minimatch version used across packages ([#&#8203;21207](https://togithub.com/nrwl/nx/pull/21207))
-   **misc:** identify and set up more nx core plugins during nx init ([#&#8203;21254](https://togithub.com/nrwl/nx/pull/21254))
-   **misc:** optionally update package.json scripts in init generators ([#&#8203;21204](https://togithub.com/nrwl/nx/pull/21204))
-   **misc:** hide unpublished links in project details view ([#&#8203;21362](https://togithub.com/nrwl/nx/pull/21362))
-   **nextjs:** Update [@&#8203;nx/next](https://togithub.com/nx/next) to Next.js 14 ([#&#8203;20703](https://togithub.com/nrwl/nx/pull/20703))
-   **nextjs:** Add support for experimental-https when running dev server ([#&#8203;20836](https://togithub.com/nrwl/nx/pull/20836))
-   **nextjs:** Standalone projects now default to src ([#&#8203;21010](https://togithub.com/nrwl/nx/pull/21010))
-   **nuxt:** make nuxt public ([#&#8203;20656](https://togithub.com/nrwl/nx/pull/20656))
-   **nx-dev:** add homepage updates ([#&#8203;20592](https://togithub.com/nrwl/nx/pull/20592))
-   **nx-dev:** improve related docs section ([#&#8203;20796](https://togithub.com/nrwl/nx/pull/20796))
-   **nx-dev:** adjust related section title padding ([#&#8203;20803](https://togithub.com/nrwl/nx/pull/20803))
-   **nx-dev:** update documentation dropdown menu links ([#&#8203;20792](https://togithub.com/nrwl/nx/pull/20792))
-   **nx-dev:** adjust highlighting of tagline ([#&#8203;20877](https://togithub.com/nrwl/nx/pull/20877))
-   **nx-dev:** new year challenge ([#&#8203;20639](https://togithub.com/nrwl/nx/pull/20639))
-   **nx-dev:** new year challenge ([868721a157](https://togithub.com/nrwl/nx/commit/868721a157))
-   **nx-dev:** modals and flip cards ([e7dcce057b](https://togithub.com/nrwl/nx/commit/e7dcce057b))
-   **nx-dev:** rectangle cards ([49a8d84023](https://togithub.com/nrwl/nx/commit/49a8d84023))
-   **react:** Treat window and var library types the same ([#&#8203;20597](https://togithub.com/nrwl/nx/pull/20597))
-   **react:** Add playwright support to generators ([#&#8203;21150](https://togithub.com/nrwl/nx/pull/21150))
-   **react-native:** add support for createNodes in react native ([#&#8203;21013](https://togithub.com/nrwl/nx/pull/21013))
-   **react-native:** generate pod install target ([#&#8203;21166](https://togithub.com/nrwl/nx/pull/21166))
-   **release:** support Revert commits in changelog renderer ([#&#8203;20663](https://togithub.com/nrwl/nx/pull/20663))
-   **release:** conventional commits support for independent projects ([#&#8203;21012](https://togithub.com/nrwl/nx/pull/21012))
-   **release:** enable git operations by default ([#&#8203;21082](https://togithub.com/nrwl/nx/pull/21082))
-   **release:** add fallback for currentVersionResolver in the version step ([#&#8203;21155](https://togithub.com/nrwl/nx/pull/21155))
-   **release:** support conventionalCommits shorthand for version config ([#&#8203;21187](https://togithub.com/nrwl/nx/pull/21187))
-   **release:** add formal entrypoint for programmatic API at nx/release ([#&#8203;21211](https://togithub.com/nrwl/nx/pull/21211))
-   **release:** support version prefix for dependents ([#&#8203;21209](https://togithub.com/nrwl/nx/pull/21209))
-   **release:** update lockfile after version command ([#&#8203;21107](https://togithub.com/nrwl/nx/pull/21107))
-   **release:** global stageChanges option & changelog fixes ([#&#8203;21223](https://togithub.com/nrwl/nx/pull/21223))
-   **release:** allow overriding generator and generatorOptions per project ([#&#8203;21298](https://togithub.com/nrwl/nx/pull/21298))
-   **remix:** add remix ([#&#8203;20641](https://togithub.com/nrwl/nx/pull/20641))
-   **remix:** add createNodes support for target inference ([#&#8203;21073](https://togithub.com/nrwl/nx/pull/21073))
-   **remix:** generate vitest file instead vite.config ([#&#8203;21100](https://togithub.com/nrwl/nx/pull/21100))
-   **remix:** remove projects prompt from artifact generators ([#&#8203;21112](https://togithub.com/nrwl/nx/pull/21112))
-   **remix:** use esm config file ([#&#8203;21111](https://togithub.com/nrwl/nx/pull/21111))
-   **remix:** add init generator ([#&#8203;21146](https://togithub.com/nrwl/nx/pull/21146))
-   **remix:** add nx welcome component ([#&#8203;21383](https://togithub.com/nrwl/nx/pull/21383))
-   **storybook:** nodes plugin ([#&#8203;20562](https://togithub.com/nrwl/nx/pull/20562))
-   **testing:** add create-nodes plugin for playwright e2e targets ([#&#8203;20099](https://togithub.com/nrwl/nx/pull/20099))
-   **testing:** add option to allow filtering test files in playwright executor ([#&#8203;20862](https://togithub.com/nrwl/nx/pull/20862))
-   **testing:** add jest create-nodes plugin ([#&#8203;20045](https://togithub.com/nrwl/nx/pull/20045))
-   **vite:** update to vitest v1 ([#&#8203;20747](https://togithub.com/nrwl/nx/pull/20747))
-   **vite:** recognize all vite.config file extensions ([#&#8203;20971](https://togithub.com/nrwl/nx/pull/20971))
-   **vue:** add nuxt as cnw vue framework ([#&#8203;20626](https://togithub.com/nrwl/nx/pull/20626))
-   **webpack:** simplify inferred webpack-cli command ([#&#8203;21340](https://togithub.com/nrwl/nx/pull/21340))
-   **workspace:** update readme to point people to the graph ([#&#8203;21325](https://togithub.com/nrwl/nx/pull/21325))

##### 🩹 Fixes

-   **angular:** add missing package update for [@&#8203;angular/pwa](https://togithub.com/angular/pwa) ([#&#8203;20690](https://togithub.com/nrwl/nx/pull/20690))
-   **angular:** safely update task runner cacheable operations when setting up ssr ([#&#8203;20736](https://togithub.com/nrwl/nx/pull/20736))
-   **angular:** fix standalone eslint config generation ([#&#8203;20885](https://togithub.com/nrwl/nx/pull/20885))
-   **angular:** add named export for moduleFederationDevServerExecutor ([#&#8203;20944](https://togithub.com/nrwl/nx/pull/20944))
-   **angular:** support scheduling inferred angular cli builder targets ([#&#8203;21019](https://togithub.com/nrwl/nx/pull/21019))
-   **angular:** run function is not called in setup-ssr/application-builder ([#&#8203;21157](https://togithub.com/nrwl/nx/pull/21157))
-   **angular:** support scoped project names and entrypoints in library secondary entrypoint generator ([#&#8203;21300](https://togithub.com/nrwl/nx/pull/21300))
-   **angular:** update autoprefixer migration to the right file ([#&#8203;21363](https://togithub.com/nrwl/nx/pull/21363))
-   **angular:** update setup-ssr generator to support the outputPath object variant ([#&#8203;21385](https://togithub.com/nrwl/nx/pull/21385))
-   **bundling:** added back code to handle skipTypeField option of rollup executor options + tests ([#&#8203;20460](https://togithub.com/nrwl/nx/pull/20460))
-   **core:** properly handle negated paths in cache outputs ([#&#8203;20661](https://togithub.com/nrwl/nx/pull/20661))
-   **core:** show warning if workspaceRoot starts with ! ([#&#8203;20705](https://togithub.com/nrwl/nx/pull/20705))
-   **core:** fallback to checking stderr if stdout is empty on publish executor ([#&#8203;20737](https://togithub.com/nrwl/nx/pull/20737))
-   **core:** correctly move project and target strings ([#&#8203;20726](https://togithub.com/nrwl/nx/pull/20726))
-   **core:** handle "." project roots properly for hashing ([#&#8203;20979](https://togithub.com/nrwl/nx/pull/20979))
-   **core:** prioritize nxignore for watcher updates ([#&#8203;20975](https://togithub.com/nrwl/nx/pull/20975))
-   **core:** formatter should not fail when absolute paths are provided as "--files" ([#&#8203;20331](https://togithub.com/nrwl/nx/pull/20331))
-   **core:** handle invalid group glob groups ([#&#8203;21027](https://togithub.com/nrwl/nx/pull/21027))
-   **core:** ensure connect-to-nx-cloud works with lerna workspaces ([#&#8203;20895](https://togithub.com/nrwl/nx/pull/20895))
-   **core:** accept vue as preset in cnw ([#&#8203;21262](https://togithub.com/nrwl/nx/pull/21262))
-   **core:** properly disconnect daemon & reject promise ([#&#8203;21283](https://togithub.com/nrwl/nx/pull/21283))
-   **core:** fix socket dir removal for macos ([#&#8203;21306](https://togithub.com/nrwl/nx/pull/21306))
-   **core:** remove deprecated recursive rmdir with rm -rf ([#&#8203;21327](https://togithub.com/nrwl/nx/pull/21327))
-   **core:** exit with sigint when sigint is received ([#&#8203;21336](https://togithub.com/nrwl/nx/pull/21336))
-   **core:** yargs array-like prompts initial field is number ([#&#8203;21349](https://togithub.com/nrwl/nx/pull/21349))
-   **core:** clarify error log when a project exists in a directory ([#&#8203;21355](https://togithub.com/nrwl/nx/pull/21355))
-   **core:** do not create new targets from target defaults when packag… ([#&#8203;21365](https://togithub.com/nrwl/nx/pull/21365))
-   **core:** fix sending sigint to child tasks with the new psuedo tty … ([#&#8203;21369](https://togithub.com/nrwl/nx/pull/21369))
-   **core:** fix compilerOptions may not exist ([#&#8203;21364](https://togithub.com/nrwl/nx/pull/21364))
-   **core:** fix conflicting types from merge conflict ([#&#8203;21371](https://togithub.com/nrwl/nx/pull/21371))
-   **core:** address some wonkiness when merging command and run-commands ([#&#8203;21315](https://togithub.com/nrwl/nx/pull/21315))
-   **devkit:** update the ci generators to use the correct launch template ([#&#8203;21304](https://togithub.com/nrwl/nx/pull/21304))
-   **devkit:** fix extractLayoutDirectory typescript types to better reflect allowed params and return value ([#&#8203;15339](https://togithub.com/nrwl/nx/pull/15339))
-   **expo:** fix externalDependencies for expo plugin ([#&#8203;21213](https://togithub.com/nrwl/nx/pull/21213))
-   **graph:** take vscode light/dark theme into account ([#&#8203;21208](https://togithub.com/nrwl/nx/pull/21208))
-   **graph:** refresh pdv periodically in watch mode ([#&#8203;21218](https://togithub.com/nrwl/nx/pull/21218))
-   **graph:** correct value when inputs/outputs are copied ([#&#8203;21245](https://togithub.com/nrwl/nx/pull/21245))
-   **graph:** fix 404 when / in name ([#&#8203;21318](https://togithub.com/nrwl/nx/pull/21318))
-   **js:** fixing output based on test runner selection ([#&#8203;20788](https://togithub.com/nrwl/nx/pull/20788))
-   **js:** allow inlineable dependency to be added to externals ([#&#8203;21051](https://togithub.com/nrwl/nx/pull/21051))
-   **js:** ensure result is valid before attempting to close it during rollup watch ([ea3c2426d3](https://togithub.com/nrwl/nx/commit/ea3c2426d3))
-   **js:** set the unsafeHttpWhitelist when the set has any items ([#&#8203;21216](https://togithub.com/nrwl/nx/pull/21216))
-   **js:** add [@&#8203;swc/helpers](https://togithub.com/swc/helpers) when initializing js plugin since it is needed by other plugins ([#&#8203;21316](https://togithub.com/nrwl/nx/pull/21316))
-   **js:** fix missing top-level dependencies in publishable libs ([#&#8203;17730](https://togithub.com/nrwl/nx/pull/17730))
-   **linter:** move should migrate all eslint configs ([#&#8203;20709](https://togithub.com/nrwl/nx/pull/20709))
-   **linter:** fix workspace-rule naming with flat config ([#&#8203;20782](https://togithub.com/nrwl/nx/pull/20782))
-   **linter:** ensure angular entry point checks are correct ([#&#8203;20859](https://togithub.com/nrwl/nx/pull/20859))
-   **linter:** flat config should always set path to config when using API ([#&#8203;20867](https://togithub.com/nrwl/nx/pull/20867))
-   **linter:** only update overrides when applicable ([#&#8203;20917](https://togithub.com/nrwl/nx/pull/20917))
-   **linter:** add links to docs to rules ([#&#8203;21199](https://togithub.com/nrwl/nx/pull/21199))
-   **linter:** fix import of chalk for reporting ([#&#8203;21201](https://togithub.com/nrwl/nx/pull/21201))
-   **linter:** update eslint plugins for [@&#8203;typescript-eslint](https://togithub.com/typescript-eslint) v6 naming ([#&#8203;21221](https://togithub.com/nrwl/nx/pull/21221))
-   **misc:** disallow path segments and allow scoped package name in --newProjectName option of move generator ([#&#8203;20768](https://togithub.com/nrwl/nx/pull/20768))
-   **misc:** ignore .nx/cache when running nx init in an angular cli project ([#&#8203;21000](https://togithub.com/nrwl/nx/pull/21000))
-   **misc:** install nx when no plugins selected during nx init ([#&#8203;21228](https://togithub.com/nrwl/nx/pull/21228))
-   **misc:** identify usage of playwright correctly when running nx init ([#&#8203;21236](https://togithub.com/nrwl/nx/pull/21236))
-   **misc:** install required deps during nx init without overriding existing versions ([#&#8203;21237](https://togithub.com/nrwl/nx/pull/21237))
-   **misc:** do not print formatting errors while setting up nx cloud in nx init ([#&#8203;21302](https://togithub.com/nrwl/nx/pull/21302))
-   **misc:** await async function invocations ([#&#8203;21299](https://togithub.com/nrwl/nx/pull/21299))
-   **module-federation:** allow relative remote paths ([#&#8203;20763](https://togithub.com/nrwl/nx/pull/20763))
-   **module-federation:** support buildable libs ([#&#8203;20786](https://togithub.com/nrwl/nx/pull/20786))
-   **nextjs:** empty port should not overwrite env port ([#&#8203;20751](https://togithub.com/nrwl/nx/pull/20751))
-   **nextjs:** Add missing setParserOptionProject ([#&#8203;20754](https://togithub.com/nrwl/nx/pull/20754))
-   **nextjs:** Page generator should work out of the box ([#&#8203;20775](https://togithub.com/nrwl/nx/pull/20775))
-   **nextjs:** enhance page generator to work when --project is not supplied ([#&#8203;20778](https://togithub.com/nrwl/nx/pull/20778))
-   **nextjs:** remove temporary patch for next eslint rules ([#&#8203;20863](https://togithub.com/nrwl/nx/pull/20863))
-   **nextjs:** correct inferred outputs for root Next.js projects ([#&#8203;20891](https://togithub.com/nrwl/nx/pull/20891))
-   **nextjs:** update migration to handle projects without eslintrc ([#&#8203;20932](https://togithub.com/nrwl/nx/pull/20932))
-   **nextjs:** Playwright should work with workspace libs ([#&#8203;20933](https://togithub.com/nrwl/nx/pull/20933))
-   **nextjs:** Missing deps for image and css optimization ([#&#8203;20941](https://togithub.com/nrwl/nx/pull/20941))
-   **nextjs:** Add support for mjs next config file ([#&#8203;21007](https://togithub.com/nrwl/nx/pull/21007))
-   **nextjs:** PCV3 with Cypress and Playwright should work with standalone Next.js Projects ([#&#8203;21103](https://togithub.com/nrwl/nx/pull/21103))
-   **nextjs:** custom server unable to run production builds ([#&#8203;21222](https://togithub.com/nrwl/nx/pull/21222))
-   **node:** E2E test port conflicts ([#&#8203;20826](https://togithub.com/nrwl/nx/pull/20826))
-   **nuxt:** add all target names when adding vite plugin ([#&#8203;21332](https://togithub.com/nrwl/nx/pull/21332))
-   **nx-dev:** change to optimized for monorepos ([#&#8203;20668](https://togithub.com/nrwl/nx/pull/20668))
-   **nx-dev:** adjust blog links ([#&#8203;20608](https://togithub.com/nrwl/nx/pull/20608))
-   **nx-dev:** typo on the homepage ([#&#8203;20767](https://togithub.com/nrwl/nx/pull/20767))
-   **nx-dev:** fix plugin stats ([#&#8203;20741](https://togithub.com/nrwl/nx/pull/20741))
-   **nx-dev:** dynamic classes not allowed ([#&#8203;20800](https://togithub.com/nrwl/nx/pull/20800))
-   **nx-dev:** improve styles ([48bcb534fb](https://togithub.com/nrwl/nx/commit/48bcb534fb))
-   **nx-dev:** fix text colors ([69523f1eed](https://togithub.com/nrwl/nx/commit/69523f1eed))
-   **nx-dev:** fix heading size and improve contrast ([#&#8203;21057](https://togithub.com/nrwl/nx/pull/21057))
-   **nx-dev:** standardize nx cloud naming ([#&#8203;21059](https://togithub.com/nrwl/nx/pull/21059))
-   **nx-dev:** increase shorts video size to show volume control ([#&#8203;21142](https://togithub.com/nrwl/nx/pull/21142))
-   **nx-dev:** do not open official plugins in new tab ([#&#8203;21179](https://togithub.com/nrwl/nx/pull/21179))
-   **nx-dev:** align button sizes on hero ([#&#8203;21163](https://togithub.com/nrwl/nx/pull/21163))
-   **nx-dev:** table of contents with code ([#&#8203;21173](https://togithub.com/nrwl/nx/pull/21173))
-   **react:** webpack backwards compat for `@nx/react/plugin/webpack` ([#&#8203;20697](https://togithub.com/nrwl/nx/pull/20697))
-   **react:** skip adding comma to config when adding remote to host if… ([#&#8203;20620](https://togithub.com/nrwl/nx/pull/20620))
-   **react:** remove <base> tag from generated index.html ([#&#8203;20750](https://togithub.com/nrwl/nx/pull/20750))
-   **react:** update default webpack config for component testing ([#&#8203;20749](https://togithub.com/nrwl/nx/pull/20749))
-   **release:** changelog renderer should prefer breaking change explanation text ([#&#8203;20798](https://togithub.com/nrwl/nx/pull/20798))
-   **release:** ensure leading v is stripped from provided semver version ([#&#8203;20815](https://togithub.com/nrwl/nx/pull/20815))
-   **release:** add overall nx release command ([#&#8203;20535](https://togithub.com/nrwl/nx/pull/20535))
-   **release:** publish error handling, dry-run in dependsOn ([#&#8203;20889](https://togithub.com/nrwl/nx/pull/20889))
-   **release:** capture all release titles during parse ([#&#8203;20864](https://togithub.com/nrwl/nx/pull/20864))
-   **release:** do not set extra v on GitHub release, improve GH API error handling ([#&#8203;20999](https://togithub.com/nrwl/nx/pull/20999))
-   **release:** update error message check for npm dist-tags ([#&#8203;20995](https://togithub.com/nrwl/nx/pull/20995))
-   **release:** stage changes when versioning with --projects argument ([#&#8203;21054](https://togithub.com/nrwl/nx/pull/21054))
-   **release:** default changelog git commit and tag true ([#&#8203;21129](https://togithub.com/nrwl/nx/pull/21129))
-   **release:** versionPrefix should default to auto ([#&#8203;21256](https://togithub.com/nrwl/nx/pull/21256))
-   **release:** filtering publish by project or group should exclude task deps ([#&#8203;21231](https://togithub.com/nrwl/nx/pull/21231))
-   **release:** fix --first-release with conventional commits and independent projects ([#&#8203;21320](https://togithub.com/nrwl/nx/pull/21320))
-   **release:** only add nx-release-publish to public packages ([#&#8203;21338](https://togithub.com/nrwl/nx/pull/21338))
-   **release:** disable workspace changelogs in config when not valid ([#&#8203;21341](https://togithub.com/nrwl/nx/pull/21341))
-   **release:** do not restart the daemon when skipLockFileUpdate is set ([#&#8203;21389](https://togithub.com/nrwl/nx/pull/21389))
-   **release:** ensure non-zero exit code is propagated, change missing target handling ([#&#8203;21388](https://togithub.com/nrwl/nx/pull/21388))
-   **remix:** legacy package pointing to incorrect readme ([#&#8203;21113](https://togithub.com/nrwl/nx/pull/21113))
-   **remix:** import of config file should invalidate cache ([#&#8203;21121](https://togithub.com/nrwl/nx/pull/21121))
-   **remix:** required property in schema should be project ([#&#8203;21258](https://togithub.com/nrwl/nx/pull/21258))
-   **remix:** use twStyles as import to prevent conflicts ([#&#8203;21276](https://togithub.com/nrwl/nx/pull/21276))
-   **remix:** tsconfigs were being incorrectly generated causing errors [#&#8203;21002](https://togithub.com/nrwl/nx/issues/21002) ([#&#8203;21387](https://togithub.com/nrwl/nx/pull/21387), [#&#8203;21002](https://togithub.com/nrwl/nx/issues/21002))
-   **repo:** add missing packages to nightly ([#&#8203;20908](https://togithub.com/nrwl/nx/pull/20908))
-   **repo:** update nightly matrix with new packages ([#&#8203;20911](https://togithub.com/nrwl/nx/pull/20911))
-   **repo:** fix version calculation on nx-release ([#&#8203;21382](https://togithub.com/nrwl/nx/pull/21382))
-   **storybook:** do not throw for versions >=7 ([#&#8203;20770](https://togithub.com/nrwl/nx/pull/20770))
-   **storybook:** handle output-dir properly for outputs ([#&#8203;21168](https://togithub.com/nrwl/nx/pull/21168))
-   **storybook:** throw if no project name for angular ([#&#8203;21308](https://togithub.com/nrwl/nx/pull/21308))
-   **storybook:** add storybook-static to gitignore for pcv3 ([#&#8203;21309](https://togithub.com/nrwl/nx/pull/21309))
-   **testing:** avoid overwriting environment variables in nx cypress preset ([#&#8203;20748](https://togithub.com/nrwl/nx/pull/20748))
-   **testing:** run playwright with the correct project option for multiple values ([#&#8203;20850](https://togithub.com/nrwl/nx/pull/20850))
-   **testing:** safely handle circular deps in component testing plugin ([#&#8203;20852](https://togit

</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://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

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

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xMjEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-01 14:33:25 +00:00
LongYinan
b524564223 chore: bump up react-datepicker version to v6 (#5777)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [react-datepicker](https://togithub.com/Hacker0x01/react-datepicker) | [`^5.0.0` -> `^6.0.0`](https://renovatebot.com/diffs/npm/react-datepicker/5.1.0/6.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-datepicker/6.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-datepicker/6.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-datepicker/5.1.0/6.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-datepicker/5.1.0/6.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>Hacker0x01/react-datepicker (react-datepicker)</summary>

### [`v6.0.0`](https://togithub.com/Hacker0x01/react-datepicker/releases/tag/v6.0.0): 6.0.0

[Compare Source](https://togithub.com/Hacker0x01/react-datepicker/compare/v5.1.0...v6.0.0)

#### What's Changed

-   Upgrade date-fns to v3 by [@&#8203;ethanve](https://togithub.com/ethanve) in [https://github.com/Hacker0x01/react-datepicker/pull/4481](https://togithub.com/Hacker0x01/react-datepicker/pull/4481)
-   Switch workflows to Node 20 by [@&#8203;martijnrusschen](https://togithub.com/martijnrusschen) in [https://github.com/Hacker0x01/react-datepicker/pull/4490](https://togithub.com/Hacker0x01/react-datepicker/pull/4490)

#### New Contributors

-   [@&#8203;ethanve](https://togithub.com/ethanve) made their first contribution in [https://github.com/Hacker0x01/react-datepicker/pull/4481](https://togithub.com/Hacker0x01/react-datepicker/pull/4481)

**Full Changelog**: https://github.com/Hacker0x01/react-datepicker/compare/v5.1.0...v6.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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-01 14:06:11 +00:00
LongYinan
83e7afeb6b chore: exclude oxlint from non-major dependencies group (#5775) 2024-02-01 10:58:09 +00:00
liuyi
2f3c6f104e fix(server): doc upsert without row lock (#5765) 2024-02-01 09:49:02 +00:00
Peng Xiao
7d951a975f fix(core): replace most --affine with cssVar (#5728)
using a [babel plugin](https://gist.github.com/pengx17/49e24ae8a5a609bdaff122ee8c679d1c) to transform all var(--affine-xxx) to cssVar

Some issues:
- tried ast-grep but it seems to be not easy to add imports conditionally
- current work does not work well with ts with types because babel will strip them out
2024-02-01 09:33:11 +00:00
LongYinan
5612424b85 chore: bump up react-datepicker version to v5 (#5691)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [react-datepicker](https://togithub.com/Hacker0x01/react-datepicker) | [`^4.20.0` -> `^5.0.0`](https://renovatebot.com/diffs/npm/react-datepicker/4.23.0/5.1.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-datepicker/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-datepicker/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-datepicker/4.23.0/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-datepicker/4.23.0/5.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>Hacker0x01/react-datepicker (react-datepicker)</summary>

### [`v5.1.0`](https://togithub.com/Hacker0x01/react-datepicker/compare/v5.0.0...v5.1.0)

[Compare Source](https://togithub.com/Hacker0x01/react-datepicker/compare/v5.0.0...v5.1.0)

### [`v5.0.0`](https://togithub.com/Hacker0x01/react-datepicker/releases/tag/v5.0.0): 5.0.0

[Compare Source](https://togithub.com/Hacker0x01/react-datepicker/compare/v4.25.0...v5.0.0)

#### Breaking changes

-   Migrate from Popper.js to Floating-UI by [@&#8203;G07cha](https://togithub.com/G07cha) in [https://github.com/Hacker0x01/react-datepicker/pull/4393](https://togithub.com/Hacker0x01/react-datepicker/pull/4393)

#### What's Changed

-   🐛 FIX: readability-isMonthinRange by [@&#8203;mary139](https://togithub.com/mary139) in [https://github.com/Hacker0x01/react-datepicker/pull/4421](https://togithub.com/Hacker0x01/react-datepicker/pull/4421)
-   Fix [#&#8203;4431](https://togithub.com/Hacker0x01/react-datepicker/issues/4431): Update the excludedDate to match the year to check of the isYearDisabled by [@&#8203;balajis-qb](https://togithub.com/balajis-qb) in [https://github.com/Hacker0x01/react-datepicker/pull/4432](https://togithub.com/Hacker0x01/react-datepicker/pull/4432)
-   Fix [#&#8203;4420](https://togithub.com/Hacker0x01/react-datepicker/issues/4420): Update home key and end key navigation in Calendar component by [@&#8203;balajis-qb](https://togithub.com/balajis-qb) in [https://github.com/Hacker0x01/react-datepicker/pull/4430](https://togithub.com/Hacker0x01/react-datepicker/pull/4430)
-   Document [#&#8203;4420](https://togithub.com/Hacker0x01/react-datepicker/issues/4420): 📝 Update the behavior of Home Key and End Key in the README file by [@&#8203;balajis-qb](https://togithub.com/balajis-qb) in [https://github.com/Hacker0x01/react-datepicker/pull/4438](https://togithub.com/Hacker0x01/react-datepicker/pull/4438)
-   Fix [#&#8203;4076](https://togithub.com/Hacker0x01/react-datepicker/issues/4076): Trigger onCalendarClose event and onChange even when the same date is selected as the start and the end date in a date range by [@&#8203;balajis-qb](https://togithub.com/balajis-qb) in [https://github.com/Hacker0x01/react-datepicker/pull/4394](https://togithub.com/Hacker0x01/react-datepicker/pull/4394)
-   Excluded dates message by [@&#8203;dvelazquez1282](https://togithub.com/dvelazquez1282) in [https://github.com/Hacker0x01/react-datepicker/pull/4437](https://togithub.com/Hacker0x01/react-datepicker/pull/4437)
-   Fix [#&#8203;4456](https://togithub.com/Hacker0x01/react-datepicker/issues/4456): Add shift+pageUp key and shift+pageDown key navigation in Calendar component by [@&#8203;balajis-qb](https://togithub.com/balajis-qb) in [https://github.com/Hacker0x01/react-datepicker/pull/4457](https://togithub.com/Hacker0x01/react-datepicker/pull/4457)
-   Fix options passed to date-fns/format by [@&#8203;emilecantin](https://togithub.com/emilecantin) in [https://github.com/Hacker0x01/react-datepicker/pull/4469](https://togithub.com/Hacker0x01/react-datepicker/pull/4469)

#### New Contributors

-   [@&#8203;mary139](https://togithub.com/mary139) made their first contribution in [https://github.com/Hacker0x01/react-datepicker/pull/4421](https://togithub.com/Hacker0x01/react-datepicker/pull/4421)
-   [@&#8203;G07cha](https://togithub.com/G07cha) made their first contribution in [https://github.com/Hacker0x01/react-datepicker/pull/4393](https://togithub.com/Hacker0x01/react-datepicker/pull/4393)
-   [@&#8203;dvelazquez1282](https://togithub.com/dvelazquez1282) made their first contribution in [https://github.com/Hacker0x01/react-datepicker/pull/4437](https://togithub.com/Hacker0x01/react-datepicker/pull/4437)
-   [@&#8203;emilecantin](https://togithub.com/emilecantin) made their first contribution in [https://github.com/Hacker0x01/react-datepicker/pull/4469](https://togithub.com/Hacker0x01/react-datepicker/pull/4469)

**Full Changelog**: https://github.com/Hacker0x01/react-datepicker/compare/v4.25.0...v5.0.0

### [`v4.25.0`](https://togithub.com/Hacker0x01/react-datepicker/releases/tag/v4.25.0): 4.25.0

[Compare Source](https://togithub.com/Hacker0x01/react-datepicker/compare/v4.24.0...v4.25.0)

#### What's Changed

-   feature: Add day parameter to renderMonthContent function by [@&#8203;omarhoumz](https://togithub.com/omarhoumz) in [https://github.com/Hacker0x01/react-datepicker/pull/4405](https://togithub.com/Hacker0x01/react-datepicker/pull/4405)
-   Update 'Local Development' instruction of README.md by [@&#8203;raceStarter](https://togithub.com/raceStarter) in [https://github.com/Hacker0x01/react-datepicker/pull/4391](https://togithub.com/Hacker0x01/react-datepicker/pull/4391)
-   Feature [#&#8203;4091](https://togithub.com/Hacker0x01/react-datepicker/issues/4091) - Make the Calendar Icon clickable by [@&#8203;balajis-qb](https://togithub.com/balajis-qb) in [https://github.com/Hacker0x01/react-datepicker/pull/4417](https://togithub.com/Hacker0x01/react-datepicker/pull/4417)

#### New Contributors

-   [@&#8203;omarhoumz](https://togithub.com/omarhoumz) made their first contribution in [https://github.com/Hacker0x01/react-datepicker/pull/4405](https://togithub.com/Hacker0x01/react-datepicker/pull/4405)
-   [@&#8203;raceStarter](https://togithub.com/raceStarter) made their first contribution in [https://github.com/Hacker0x01/react-datepicker/pull/4391](https://togithub.com/Hacker0x01/react-datepicker/pull/4391)

**Full Changelog**: https://github.com/Hacker0x01/react-datepicker/compare/v4.24.0...v4.25.0

### [`v4.24.0`](https://togithub.com/Hacker0x01/react-datepicker/releases/tag/v4.24.0): 4.24.0

[Compare Source](https://togithub.com/Hacker0x01/react-datepicker/compare/v4.23.0...v4.24.0)

#### What's Changed

-   containerRef div shouldnt affect styling by [@&#8203;joaopaulo-capy](https://togithub.com/joaopaulo-capy) in [https://github.com/Hacker0x01/react-datepicker/pull/4384](https://togithub.com/Hacker0x01/react-datepicker/pull/4384)
-   Fix: reflect the `holidays` prop change by [@&#8203;shimech](https://togithub.com/shimech) in [https://github.com/Hacker0x01/react-datepicker/pull/4373](https://togithub.com/Hacker0x01/react-datepicker/pull/4373)
-   Disable clear button when the component is disabled by [@&#8203;Rafatcb](https://togithub.com/Rafatcb) in [https://github.com/Hacker0x01/react-datepicker/pull/4392](https://togithub.com/Hacker0x01/react-datepicker/pull/4392)

#### New Contributors

-   [@&#8203;joaopaulo-capy](https://togithub.com/joaopaulo-capy) made their first contribution in [https://github.com/Hacker0x01/react-datepicker/pull/4384](https://togithub.com/Hacker0x01/react-datepicker/pull/4384)
-   [@&#8203;shimech](https://togithub.com/shimech) made their first contribution in [https://github.com/Hacker0x01/react-datepicker/pull/4373](https://togithub.com/Hacker0x01/react-datepicker/pull/4373)
-   [@&#8203;Rafatcb](https://togithub.com/Rafatcb) made their first contribution in [https://github.com/Hacker0x01/react-datepicker/pull/4392](https://togithub.com/Hacker0x01/react-datepicker/pull/4392)

**Full Changelog**: https://github.com/Hacker0x01/react-datepicker/compare/v4.23.0...v4.24.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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xMzUuMCIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-01 09:23:45 +00:00
LongYinan
15d32926c3 ci: use free m1 macos runner (#5766)
https://github.blog/changelog/2024-01-30-github-actions-introducing-the-new-m1-macos-runner-available-to-open-source/
2024-02-01 09:03:07 +00:00
Peng Xiao
df8e8051c3 chore: bump electron dependencies (#5770)
to include this fix https://github.com/electron/electron/pull/40994
2024-02-01 08:53:20 +00:00
Joooye_34
338c3001b0 feat: support sign-in with subscription coupon (#5768) 2024-02-01 08:43:47 +00:00
Yifeng Wang
fec2090de5 feat: bump blocksuite (#5767)
Co-authored-by: LongYinan <lynweklm@gmail.com>
2024-02-01 16:28:22 +08:00
LongYinan
61677b2ac4 chore: change bump-blocksuite script to js (#5763)
`./scripts/bump-blocksuite.js`
2024-02-01 07:16:19 +00:00
EYHN
799fa9cfa6 fix(workspace): fix sync stuck (#5762)
* remove MultipleBatchSyncSender
* add timeout (30 seconds) on socket.emit
2024-02-01 06:58:09 +00:00
Chen
aa33bf60d6 fix: update blocksuite local debug config (#5742)
Due to the reconstruction of the blocksuite package, the corresponding local debug configuration needs to be updated.

The related commit: https://github.com/toeverything/blocksuite/pull/6133
2024-02-01 06:49:16 +00:00
DarkSky
1db8019292 feat: ignore case for email (#5754)
fix #5738
2024-02-01 05:05:16 +00:00
LongYinan
349f7c3f15 chore: bump up codecov/codecov-action action to v4 (#5758)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [codecov/codecov-action](https://togithub.com/codecov/codecov-action) | action | major | `v3` -> `v4` |

---

### Release Notes

<details>
<summary>codecov/codecov-action (codecov/codecov-action)</summary>

### [`v4`](https://togithub.com/codecov/codecov-action/compare/v3...v4)

[Compare Source](https://togithub.com/codecov/codecov-action/compare/v3...v4)

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-02-01 02:17:20 +00:00
LongYinan
057796e691 chore: bump up kentaro-m/auto-assign-action action to v2 (#5757)
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [kentaro-m/auto-assign-action](https://togithub.com/kentaro-m/auto-assign-action) | action | major | `v1.2.5` -> `v2.0.0` |

---

### Release Notes

<details>
<summary>kentaro-m/auto-assign-action (kentaro-m/auto-assign-action)</summary>

### [`v2.0.0`](https://togithub.com/kentaro-m/auto-assign-action/releases/tag/v2.0.0)

[Compare Source](https://togithub.com/kentaro-m/auto-assign-action/compare/v1.2.6...v2.0.0)

#### What's Changed

-   chore(deps): update dependency prettier to v3.2.4 by [@&#8203;renovate](https://togithub.com/renovate) in [https://github.com/kentaro-m/auto-assign-action/pull/166](https://togithub.com/kentaro-m/auto-assign-action/pull/166)
-   fix: update Node.js version and action configuration by [@&#8203;kentaro-m](https://togithub.com/kentaro-m) in [https://github.com/kentaro-m/auto-assign-action/pull/170](https://togithub.com/kentaro-m/auto-assign-action/pull/170)
-   fix: update [@&#8203;types/node](https://togithub.com/types/node) version to 20.11.13 by [@&#8203;kentaro-m](https://togithub.com/kentaro-m) in [https://github.com/kentaro-m/auto-assign-action/pull/171](https://togithub.com/kentaro-m/auto-assign-action/pull/171)

**Full Changelog**: https://github.com/kentaro-m/auto-assign-action/compare/v1.2.6...v2.0.0

### [`v1.2.6`](https://togithub.com/kentaro-m/auto-assign-action/releases/tag/v1.2.6)

[Compare Source](https://togithub.com/kentaro-m/auto-assign-action/compare/v1.2.5...v1.2.6)

#### Changes

-   fix: fix security issue ([#&#8203;165](https://togithub.com/kentaro-m/auto-assign-action/issues/165)) [@&#8203;kentaro-m](https://togithub.com/kentaro-m)
-   chore(deps): update dependency prettier to v3.1.1 ([#&#8203;163](https://togithub.com/kentaro-m/auto-assign-action/issues/163)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update actions/setup-node action to v4 ([#&#8203;158](https://togithub.com/kentaro-m/auto-assign-action/issues/158)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update actions/checkout action to v4 ([#&#8203;152](https://togithub.com/kentaro-m/auto-assign-action/issues/152)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency typescript to v5.3.3 ([#&#8203;162](https://togithub.com/kentaro-m/auto-assign-action/issues/162)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency typescript to v5.3.2 ([#&#8203;161](https://togithub.com/kentaro-m/auto-assign-action/issues/161)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency prettier to v3.1.0 ([#&#8203;160](https://togithub.com/kentaro-m/auto-assign-action/issues/160)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update unit test packages ([#&#8203;138](https://togithub.com/kentaro-m/auto-assign-action/issues/138)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency typescript to v5.2.2 ([#&#8203;151](https://togithub.com/kentaro-m/auto-assign-action/issues/151)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency [@&#8203;vercel/ncc](https://togithub.com/vercel/ncc) to v0.38.1 ([#&#8203;156](https://togithub.com/kentaro-m/auto-assign-action/issues/156)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency lint-staged to v13.3.0 ([#&#8203;150](https://togithub.com/kentaro-m/auto-assign-action/issues/150)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency [@&#8203;vercel/ncc](https://togithub.com/vercel/ncc) to v0.38.0 ([#&#8203;149](https://togithub.com/kentaro-m/auto-assign-action/issues/149)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency [@&#8203;octokit/webhooks-types](https://togithub.com/octokit/webhooks-types) to v7.3.1 ([#&#8203;143](https://togithub.com/kentaro-m/auto-assign-action/issues/143)) [@&#8203;renovate](https://togithub.com/renovate)
-   fix(deps): update dependency [@&#8203;actions/core](https://togithub.com/actions/core) to v1.10.1 ([#&#8203;148](https://togithub.com/kentaro-m/auto-assign-action/issues/148)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency prettier to v3.0.3 ([#&#8203;147](https://togithub.com/kentaro-m/auto-assign-action/issues/147)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency node to v16.20.2 ([#&#8203;142](https://togithub.com/kentaro-m/auto-assign-action/issues/142)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency [@&#8203;octokit/webhooks-types](https://togithub.com/octokit/webhooks-types) to v7 ([#&#8203;135](https://togithub.com/kentaro-m/auto-assign-action/issues/135)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency prettier to v3.0.1 ([#&#8203;141](https://togithub.com/kentaro-m/auto-assign-action/issues/141)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency prettier to v3 ([#&#8203;140](https://togithub.com/kentaro-m/auto-assign-action/issues/140)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency typescript to v5.1.6 ([#&#8203;139](https://togithub.com/kentaro-m/auto-assign-action/issues/139)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency lint-staged to v13.2.3 ([#&#8203;137](https://togithub.com/kentaro-m/auto-assign-action/issues/137)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update node.js to v16.20.1 ([#&#8203;134](https://togithub.com/kentaro-m/auto-assign-action/issues/134)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency typescript to v5.1.3 ([#&#8203;132](https://togithub.com/kentaro-m/auto-assign-action/issues/132)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update node.js to v16.20.0 ([#&#8203;126](https://togithub.com/kentaro-m/auto-assign-action/issues/126)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency ts-jest to v29.1.0 ([#&#8203;130](https://togithub.com/kentaro-m/auto-assign-action/issues/130)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency [@&#8203;octokit/webhooks-types](https://togithub.com/octokit/webhooks-types) to v6.11.0 ([#&#8203;129](https://togithub.com/kentaro-m/auto-assign-action/issues/129)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency prettier to v2.8.8 ([#&#8203;131](https://togithub.com/kentaro-m/auto-assign-action/issues/131)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency lint-staged to v13.2.2 ([#&#8203;127](https://togithub.com/kentaro-m/auto-assign-action/issues/127)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency typescript to v5.0.4 ([#&#8203;128](https://togithub.com/kentaro-m/auto-assign-action/issues/128)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency typescript to v5.0.3 ([#&#8203;125](https://togithub.com/kentaro-m/auto-assign-action/issues/125)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency prettier to v2.8.7 ([#&#8203;123](https://togithub.com/kentaro-m/auto-assign-action/issues/123)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency typescript to v5 ([#&#8203;122](https://togithub.com/kentaro-m/auto-assign-action/issues/122)) [@&#8203;renovate](https://togithub.com/renovate)
-   fix(deps): update dependency js-yaml to v3.14.1 ([#&#8203;121](https://togithub.com/kentaro-m/auto-assign-action/issues/121)) [@&#8203;renovate](https://togithub.com/renovate)
-   fix(deps): update dependency [@&#8203;actions/github](https://togithub.com/actions/github) to v5.1.1 ([#&#8203;120](https://togithub.com/kentaro-m/auto-assign-action/issues/120)) [@&#8203;renovate](https://togithub.com/renovate)
-   fix(deps): update dependency [@&#8203;actions/core](https://togithub.com/actions/core) to v1.10.0 ([#&#8203;119](https://togithub.com/kentaro-m/auto-assign-action/issues/119)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update unit test packages to v29.5.0 ([#&#8203;118](https://togithub.com/kentaro-m/auto-assign-action/issues/118)) [@&#8203;renovate](https://togithub.com/renovate)
-   chore(deps): update dependency lint-staged to v13.2.0 ([#&#8203;117](https://togithub.com/kentaro-m/auto-assign-action/issues/117)) [@&#8203;renovate](https://togithub.com/renovate)

</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 has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/toeverything/AFFiNE).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNTMuMiIsInVwZGF0ZWRJblZlciI6IjM3LjE1My4yIiwidGFyZ2V0QnJhbmNoIjoiY2FuYXJ5In0=-->
2024-01-31 15:19:32 +00:00
LongYinan
e26d978b26 fix(server): resolve cherry-pick issue 2024-01-31 22:00:20 +08:00
liuyi
e3b8d0dba4 feat(server): allow pass coupon to checkout session (#5749) 2024-01-31 21:34:22 +08:00
liuyi
f1ccc504b5 fix(server): doc upsert race condition (#5755) 2024-01-31 21:13:29 +08:00
liuyi
26db1d436d refactor(server): server errors (#5741)
standardize the error raising in both GraphQL Resolvers and Controllers.

Now, All user aware errors should be throwed with `HttpException`'s variants, for example `NotFoundException`.

> Directly throwing `GraphQLError` are forbidden.
The GraphQL errorFormatter will handle it automatically and set `code`, `status` in error extensions.

At the same time, the frontend `GraphQLError` should be imported from `@affine/graphql`, which introduce a better error extensions type.

----
controller example:
```js
@Get('/docs/${id}')
doc() {
  // ...
  // imported from '@nestjs/common'
  throw new NotFoundException('Doc is not found.');
  // ...
}
```
the above will response as:
```
status: 404 Not Found
{
  "message": "Doc is not found.",
  "statusCode": 404,
  "error": "Not Found"
}
```

resolver example:
```js
@Mutation()
invite() {
  // ...
  throw new PayloadTooLargeException('Workspace seats is full.')
  // ...
}
```

the above will response as:
```
status: 200 Ok
{
  "data": null,
  "errors": [
    {
      "message": "Workspace seats is full.",
      "extensions": {
        "code": 404,
        "status": "Not Found"
      }
    }
  ]
}
```

for frontend GraphQLError user-friend, a helper function introduced:

```js
import { findGraphQLError } from '@affine/graphql'

fetch(query)
  .catch(errOrArr => {
    const e = findGraphQLError(errOrArr, e => e.extensions.code === 404)
    if (e) {
      // handle
    }
})
```
2024-01-31 08:43:03 +00:00
liuyi
72d9cc1e5b chore(storage): bump y-octo (#5751) 2024-01-31 06:54:33 +00:00
liuyi
db8e49b046 refactor(server): throw Unauthorized instead if user is not signed in (#5746) 2024-01-31 02:12:22 +00:00
Cats Juice
5f3c04b51e fix(core): set createDate to journal's date when journal created (#5701) 2024-01-30 23:11:07 +08:00
Cats Juice
6b350b1735 feat(core): append to today's joruanl via CMDK (#5692) 2024-01-30 23:08:25 +08:00
EYHN
329fc19852 refactor(infra): migrate to new infra (#5565) 2024-01-30 07:16:39 +00:00
EYHN
1e3499c323 feat(infra): page infra (#5618) 2024-01-30 06:31:26 +00:00
EYHN
2e71c980cf feat(infra): new workspace infra (#5617)
This PR copying @affine/workspace into common/infra, and adding definitions for services and unit tests.
2024-01-30 06:31:24 +00:00
EYHN
4f7e0d012d chore: fix vitest error on tinykeys (#5693) 2024-01-30 06:31:21 +00:00
EYHN
88cd83fed1 feat(infra): standard lifecycle service (#5564) 2024-01-30 06:31:19 +00:00
EYHN
b3a8e62984 feat(infra): standard storage service (#5563) 2024-01-30 06:31:15 +00:00
EYHN
48eb6c50e1 feat(infra): di container (#5497)
docs: https://insider.affine.pro/share/055f9c4b-497a-43ec-a1c9-29d5baf184b9/N785YJ__oLMb2fUaLOv-k
2024-01-30 06:31:13 +00:00
EYHN
c9f8e49f75 feat(infra): livedata (#5562)
LiveData is a reactive data type.

## basic usage

@example
```ts
const livedata = new LiveData(0); // create livedata with initial value

livedata.next(1); // update value

console.log(livedata.value); // get current value

livedata.subscribe(v => { // subscribe to value changes
 console.log(v); // 1
});
```

## observable

LiveData is a rxjs observable, you can use rxjs operators.

@example
```ts
new LiveData(0).pipe(
  map(v => v + 1),
  filter(v => v > 1),
  ...
)
```

NOTICE: different from normal observable, LiveData will always emit the latest value when you subscribe to it.

## from observable

LiveData can be created from observable or from other livedata.

@example
```ts
const A = LiveData.from(
  of(1, 2, 3, 4), // from observable
  0 // initial value
);

const B = LiveData.from(
  A.pipe(map(v => 'from a ' + v)), // from other livedata
  '' // initial value
);
```

NOTICE: LiveData.from will not complete when the observable completes, you can use `spreadComplete` option to change
this behavior.

## Why is it called LiveData

This API is very similar to LiveData in Android, as both are based on Observable, so I named it LiveData.
2024-01-30 06:31:11 +00:00
917 changed files with 34334 additions and 44526 deletions

View File

@@ -8,5 +8,11 @@ corepack prepare yarn@stable --activate
# install dependencies
yarn install
# Build Server Dependencies
yarn workspace @affine/storage build
# Create database
yarn workspace @affine/server prisma db push
yarn workspace @affine/server prisma db push
# Create user username: affine, password: affine
echo "INSERT INTO \"users\"(\"id\",\"name\",\"email\",\"email_verified\",\"created_at\",\"password\") VALUES('99f3ad04-7c9b-441e-a6db-79f73aa64db9','affine','affine@affine.pro','2024-02-26 15:54:16.974','2024-02-26 15:54:16.974+00','\$argon2id\$v=19\$m=19456,t=2,p=1\$esDS3QCHRH0Kmeh87YPm5Q\$9S+jf+xzw2Hicj6nkWltvaaaXX3dQIxAFwCfFa9o38A');" | yarn workspace @affine/server prisma db execute --stdin

View File

@@ -21,5 +21,6 @@
}
},
"updateContentCommand": "bash ./.devcontainer/build.sh",
"postCreateCommand": "bash ./.devcontainer/setup-user.sh"
"postCreateCommand": "bash ./.devcontainer/setup-user.sh",
"postStartCommand": ["yarn dev", "yarn workspace @affine/server dev"]
}

View File

@@ -1,7 +1,9 @@
set -e
if [ -v GRAPHITE_TOKEN ];then
gt auth --token $GRAPHITE_TOKEN
fi
git fetch
git fetch origin canary:canary --depth=1
git branch canary -t origin/canary
gt init --trunk canary

View File

@@ -12,3 +12,4 @@ static
web-static
public
packages/frontend/i18n/src/i18n-generated.ts
packages/frontend/templates/edgeless-templates.gen.ts

View File

@@ -64,7 +64,7 @@ const allPackages = [
'packages/frontend/i18n',
'packages/frontend/native',
'packages/frontend/templates',
'packages/frontend/workspace',
'packages/frontend/workspace-impl',
'packages/common/debug',
'packages/common/env',
'packages/common/infra',

View File

@@ -7,6 +7,8 @@ body:
attributes:
value: |
Thanks for taking the time to fill out this bug report!
Check out this [link](https://github.com/toeverything/AFFiNE/blob/canary/docs/issue-triaging.md)
to learn how we manage issues and when your issue will be processed.
- type: textarea
id: what-happened
attributes:
@@ -41,6 +43,14 @@ body:
- Firefox
- Safari
- Other
- type: checkboxes
id: selfhost
attributes:
label: Are you self-hosting?
description: >
If you are self-hosting, please check the box and provide information about your setup.
options:
- label: 'Yes'
- type: textarea
id: logs
attributes:
@@ -53,11 +63,3 @@ body:
description: |
Links? References? Anything that will give us more context about the issue you are encountering!
Tip: You can attach images here
- type: checkboxes
attributes:
label: Are you willing to submit a PR?
description: >
(Optional) We encourage you to submit a [Pull Request](https://github.com/toeverything/affine/pulls) (PR) to help improve AFFiNE for everyone, especially if you have a good understanding of how to implement a fix or feature.
See the AFFiNE [Contributing Guide](https://github.com/toeverything/affine/blob/canary/CONTRIBUTING.md) to get started.
options:
- label: Yes I'd like to help by submitting a PR!

View File

@@ -49,7 +49,7 @@ runs:
- name: Build
shell: bash
run: |
yarn workspace ${{ inputs.package }} nx build ${{ inputs.package }} --target ${{ inputs.target }} --use-napi-cross
yarn workspace ${{ inputs.package }} nx build ${{ inputs.package }} -- --target ${{ inputs.target }} --use-napi-cross
env:
NX_CLOUD_ACCESS_TOKEN: ${{ inputs.nx_token }}
DEBUG: 'napi:*'

View File

@@ -24,7 +24,7 @@ runs:
shell: bash
run: |
echo "GIT_SHORT_HASH=$(git rev-parse --short HEAD)" >> "$GITHUB_ENV"
- uses: azure/setup-helm@v3
- uses: azure/setup-helm@v4
- id: auth
uses: google-github-actions/auth@v2
with:

View File

@@ -15,9 +15,9 @@ const {
R2_SECRET_ACCESS_KEY,
ENABLE_CAPTCHA,
CAPTCHA_TURNSTILE_SECRET,
OAUTH_EMAIL_SENDER,
OAUTH_EMAIL_LOGIN,
OAUTH_EMAIL_PASSWORD,
MAILER_SENDER,
MAILER_USER,
MAILER_PASSWORD,
AFFINE_GOOGLE_CLIENT_ID,
AFFINE_GOOGLE_CLIENT_SECRET,
CLOUD_SQL_IAM_ACCOUNT,
@@ -103,9 +103,9 @@ const createHelmCommand = ({ isDryRun }) => {
`--set-string graphql.app.objectStorage.r2.accountId="${R2_ACCOUNT_ID}"`,
`--set-string graphql.app.objectStorage.r2.accessKeyId="${R2_ACCESS_KEY_ID}"`,
`--set-string graphql.app.objectStorage.r2.secretAccessKey="${R2_SECRET_ACCESS_KEY}"`,
`--set-string graphql.app.oauth.email.sender="${OAUTH_EMAIL_SENDER}"`,
`--set-string graphql.app.oauth.email.login="${OAUTH_EMAIL_LOGIN}"`,
`--set-string graphql.app.oauth.email.password="${OAUTH_EMAIL_PASSWORD}"`,
`--set-string graphql.app.mailer.sender="${MAILER_SENDER}"`,
`--set-string graphql.app.mailer.user="${MAILER_USER}"`,
`--set-string graphql.app.mailer.password="${MAILER_PASSWORD}"`,
`--set-string graphql.app.oauth.google.enabled=true`,
`--set-string graphql.app.oauth.google.clientId="${AFFINE_GOOGLE_CLIENT_ID}"`,
`--set-string graphql.app.oauth.google.clientSecret="${AFFINE_GOOGLE_CLIENT_SECRET}"`,
@@ -113,6 +113,7 @@ const createHelmCommand = ({ isDryRun }) => {
`--set-string graphql.app.payment.stripe.webhookKey="${STRIPE_WEBHOOK_KEY}"`,
`--set graphql.app.experimental.enableJwstCodec=true`,
`--set graphql.app.features.earlyAccessPreview=false`,
`--set graphql.app.features.syncClientVersionCheck=true`,
`--set sync.replicaCount=${syncReplicaCount}`,
`--set-string sync.image.tag="${imageTag}"`,
...serviceAnnotations,

View File

@@ -1,6 +1,6 @@
FROM openresty/openresty:1.21.4.3-0-buster
FROM openresty/openresty:1.25.3.1-0-buster
WORKDIR /app
COPY ./packages/frontend/core/dist/index.html ./dist/index.html
COPY ./packages/frontend/core/dist ./dist
COPY ./.github/deployment/front/nginx.conf /usr/local/openresty/nginx/conf/nginx.conf
COPY ./.github/deployment/front/affine.nginx.conf /etc/nginx/conf.d/affine.nginx.conf

View File

@@ -1,4 +1,4 @@
FROM node:18-bookworm-slim
FROM node:20-bookworm-slim
COPY ./packages/backend/server /app
COPY ./packages/frontend/core/dist /app/static
@@ -8,4 +8,4 @@ RUN apt-get update && \
apt-get install -y --no-install-recommends openssl && \
rm -rf /var/lib/apt/lists/*
CMD ["node", "--es-module-specifier-resolution=node", "./dist/index.js"]
CMD ["node", "--import", "./scripts/register.js", "./dist/index.js"]

View File

@@ -1,6 +1,6 @@
services:
affine:
image: ghcr.io/toeverything/affine-graphql:beta
image: ghcr.io/toeverything/affine-graphql:stable
container_name: affine_selfhosted
command:
['sh', '-c', 'node ./scripts/self-host-predeploy && node ./dist/index.js']
@@ -23,13 +23,11 @@ services:
max-size: '1000m'
restart: unless-stopped
environment:
- NODE_OPTIONS=--es-module-specifier-resolution node
- NODE_OPTIONS="--import=./scripts/register.js"
- AFFINE_CONFIG_PATH=/root/.affine/config
- REDIS_SERVER_HOST=redis
- DATABASE_URL=postgres://affine:affine@postgres:5432/affine
- DISABLE_TELEMETRY=true
- NODE_ENV=production
- SERVER_FLAVOR=selfhosted
- AFFINE_ADMIN_EMAIL=${AFFINE_ADMIN_EMAIL}
- AFFINE_ADMIN_PASSWORD=${AFFINE_ADMIN_PASSWORD}
redis:

View File

@@ -39,6 +39,8 @@ spec:
value: "--max-old-space-size=4096"
- name: NO_COLOR
value: "1"
- name: DEPLOYMENT_TYPE
value: "affine"
- name: SERVER_FLAVOR
value: "graphql"
- name: AFFINE_ENV
@@ -81,31 +83,33 @@ spec:
value: "{{ .Values.app.captcha.enabled }}"
- name: FEATURES_EARLY_ACCESS_PREVIEW
value: "{{ .Values.app.features.earlyAccessPreview }}"
- name: OAUTH_EMAIL_SENDER
- name: FEATURES_SYNC_CLIENT_VERSION_CHECK
value: "{{ .Values.app.features.syncClientVersionCheck }}"
- name: MAILER_HOST
valueFrom:
secretKeyRef:
name: "{{ .Values.app.oauth.email.secretName }}"
key: sender
- name: OAUTH_EMAIL_LOGIN
name: "{{ .Values.app.mailer.secretName }}"
key: host
- name: MAILER_PORT
valueFrom:
secretKeyRef:
name: "{{ .Values.app.oauth.email.secretName }}"
key: login
- name: OAUTH_EMAIL_SERVER
valueFrom:
secretKeyRef:
name: "{{ .Values.app.oauth.email.secretName }}"
key: server
- name: OAUTH_EMAIL_PORT
valueFrom:
secretKeyRef:
name: "{{ .Values.app.oauth.email.secretName }}"
name: "{{ .Values.app.mailer.secretName }}"
key: port
- name: OAUTH_EMAIL_PASSWORD
- name: MAILER_USER
valueFrom:
secretKeyRef:
name: "{{ .Values.app.oauth.email.secretName }}"
name: "{{ .Values.app.mailer.secretName }}"
key: user
- name: MAILER_PASSWORD
valueFrom:
secretKeyRef:
name: "{{ .Values.app.mailer.secretName }}"
key: password
- name: MAILER_SENDER
valueFrom:
secretKeyRef:
name: "{{ .Values.app.mailer.secretName }}"
key: sender
- name: STRIPE_API_KEY
valueFrom:
secretKeyRef:

View File

@@ -0,0 +1,13 @@
{{- if .Values.app.mailer.secretName -}}
apiVersion: v1
kind: Secret
metadata:
name: "{{ .Values.app.mailer.secretName }}"
type: Opaque
data:
host: "{{ .Values.app.mailer.host | b64enc }}"
port: "{{ .Values.app.mailer.port | b64enc }}"
user: "{{ .Values.app.mailer.user | b64enc }}"
password: "{{ .Values.app.mailer.password | b64enc }}"
sender: "{{ .Values.app.mailer.sender | b64enc }}"
{{- end }}

View File

@@ -1,15 +1,3 @@
apiVersion: v1
kind: Secret
metadata:
name: "{{ .Values.app.oauth.email.secretName }}"
type: Opaque
data:
sender: "{{ .Values.app.oauth.email.sender | b64enc }}"
login: "{{ .Values.app.oauth.email.login | b64enc }}"
password: "{{ .Values.app.oauth.email.password | b64enc }}"
server: "{{ .Values.app.oauth.email.server | b64enc }}"
port: "{{ .Values.app.oauth.email.port | b64enc }}"
---
{{- if .Values.app.oauth.google.enabled -}}
apiVersion: v1
kind: Secret

View File

@@ -35,14 +35,7 @@ app:
accountId: ''
accessKeyId: ''
secretAccessKey: ''
oauth:
email:
secretName: 'oauth-email'
sender: 'noreply@toeverything.info'
login: ''
password: ''
server: 'smtp.gmail.com'
port: '465'
oauth:
google:
enabled: false
secretName: oauth-google
@@ -53,6 +46,13 @@ app:
secretName: oauth-github
clientId: ''
clientSecret: ''
mailer:
secretName: 'mailer'
host: 'smtp.gmail.com'
port: '465'
user: ''
password: ''
sender: 'noreply@toeverything.info'
payment:
stripe:
secretName: 'stripe'
@@ -60,6 +60,7 @@ app:
webhookKey: ''
features:
earlyAccessPreview: false
syncClientVersionCheck: false
serviceAccount:
create: true

View File

@@ -36,6 +36,8 @@ spec:
value: "{{ .Values.env }}"
- name: NO_COLOR
value: "1"
- name: DEPLOYMENT_TYPE
value: "affine"
- name: SERVER_FLAVOR
value: "sync"
- name: NEXTAUTH_URL

5
.github/labeler.yml vendored
View File

@@ -29,11 +29,6 @@ mod:plugin-cli:
- any-glob-to-any-file:
- 'tools/plugin-cli/**/*'
mod:workspace:
- changed-files:
- any-glob-to-any-file:
- 'packages/common/workspace/**/*'
mod:workspace-impl:
- changed-files:
- any-glob-to-any-file:

11
.github/renovate.json vendored
View File

@@ -47,17 +47,22 @@
"groupName": "electron-forge"
},
{
"groupName": "blocksuite-nightly",
"matchPackageNames": ["oxlint"],
"rangeStrategy": "replace",
"groupName": "oxlint"
},
{
"groupName": "blocksuite-canary",
"matchPackagePatterns": ["^@blocksuite"],
"excludePackageNames": ["@blocksuite/icons"],
"rangeStrategy": "replace",
"followTag": "nightly"
"followTag": "canary"
},
{
"groupName": "all non-major dependencies",
"groupSlug": "all-minor-patch",
"matchPackagePatterns": ["*"],
"excludePackagePatterns": ["^@blocksuite/"],
"excludePackagePatterns": ["^@blocksuite/", "oxlint"],
"matchUpdateTypes": ["minor", "patch"]
},
{

View File

@@ -4,6 +4,8 @@ on:
push:
branches:
- canary
- beta
- stable
- v[0-9]+.[0-9]+.x-staging
- v[0-9]+.[0-9]+.x
paths-ignore:
@@ -19,7 +21,7 @@ env:
MACOSX_DEPLOYMENT_TARGET: '10.13'
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/node_modules/.cache/ms-playwright
DISABLE_TELEMETRY: true
DEPLOYMENT_TYPE: affine
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@@ -116,6 +118,7 @@ jobs:
runs-on: ubuntu-latest
env:
DISTRIBUTION: browser
IN_CI_TEST: true
strategy:
fail-fast: false
matrix:
@@ -190,7 +193,7 @@ jobs:
run: yarn nx test:coverage @affine/monorepo
- name: Upload unit test coverage results
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./.coverage/store/lcov.info
@@ -209,8 +212,8 @@ jobs:
spec:
- { os: ubuntu-latest, target: x86_64-unknown-linux-gnu }
- { os: windows-latest, target: x86_64-pc-windows-msvc }
- { os: macos-latest, target: x86_64-apple-darwin }
- { os: macos-latest, target: aarch64-apple-darwin }
- { os: macos-14, target: x86_64-apple-darwin }
- { os: macos-14, target: aarch64-apple-darwin }
steps:
- uses: actions/checkout@v4
@@ -291,6 +294,7 @@ jobs:
runs-on: ubuntu-latest
needs: build-storage
env:
NODE_ENV: test
DISTRIBUTION: browser
services:
postgres:
@@ -353,7 +357,7 @@ jobs:
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
- name: Upload server test coverage results
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./packages/backend/server/.coverage/lcov.info
@@ -367,6 +371,7 @@ jobs:
env:
DISTRIBUTION: browser
DATABASE_URL: postgresql://affine:affine@localhost:5432/affine
IN_CI_TEST: true
strategy:
fail-fast: false
matrix:
@@ -447,7 +452,6 @@ jobs:
${{ matrix.tests.script }}
env:
DEV_SERVER_URL: http://localhost:8080
ENABLE_LOCAL_EMAIL: true
- name: Upload test results
if: ${{ failure() }}
@@ -462,22 +466,21 @@ jobs:
runs-on: ${{ matrix.spec.os }}
strategy:
fail-fast: false
# all combinations: macos-latest x64, macos-latest arm64, windows-latest x64, ubuntu-latest x64
matrix:
spec:
- {
os: macos-latest,
os: macos-14,
platform: macos,
arch: x64,
target: x86_64-apple-darwin,
test: true,
test: false,
}
- {
os: macos-latest,
os: macos-14,
platform: macos,
arch: arm64,
target: aarch64-apple-darwin,
test: false,
test: true,
}
- {
os: ubuntu-latest,
@@ -534,7 +537,7 @@ jobs:
run: yarn workspace @affine/electron build
- name: Run desktop tests
if: ${{ matrix.spec.test && matrix.spec.os == 'ubuntu-latest' }}
if: ${{ matrix.spec.os == 'ubuntu-latest' }}
run: xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- yarn workspace @affine-test/affine-desktop e2e
- name: Run desktop tests
@@ -542,15 +545,23 @@ jobs:
run: yarn workspace @affine-test/affine-desktop e2e
- name: Make bundle
if: ${{ matrix.spec.os == 'macos-latest' && matrix.spec.arch == 'arm64' }}
if: ${{ matrix.spec.target == 'aarch64-apple-darwin' }}
env:
SKIP_BUNDLE: true
SKIP_WEB_BUILD: true
HOIST_NODE_MODULES: 1
run: yarn workspace @affine/electron package --platform=darwin --arch=arm64
- name: Make AppImage
run: yarn workspace @affine/electron make --platform=linux --arch=x64
if: ${{ matrix.spec.target == 'x86_64-unknown-linux-gnu' }}
env:
SKIP_PLUGIN_BUILD: 1
SKIP_WEB_BUILD: 1
HOIST_NODE_MODULES: 1
- name: Output check
if: ${{ matrix.spec.os == 'macos-latest' && matrix.spec.arch == 'arm64' }}
if: ${{ matrix.spec.os == 'macos-14' && matrix.spec.arch == 'arm64' }}
run: |
yarn workspace @affine/electron exec node --loader ts-node/esm/transpile-only ./scripts/macos-arm64-output-check.ts
@@ -561,3 +572,22 @@ jobs:
name: test-results-e2e-${{ matrix.spec.os }}-${{ matrix.spec.arch }}
path: ./test-results
if-no-files-found: ignore
test-done:
needs:
- analyze
- lint
- check-yarn-binary
- e2e-test
- e2e-migration-test
- unit-test
- server-test
- server-e2e-test
- desktop-test
if: always()
runs-on: ubuntu-latest
name: 3, 2, 1 Launch
steps:
- run: exit 1
# Thank you, next https://github.com/vercel/next.js/blob/canary/.github/workflows/build_and_test.yml#L379
if: ${{ always() && (contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')) }}

View File

@@ -72,7 +72,7 @@ jobs:
if-no-files-found: error
build-core-selfhost:
name: Build @affine/core
name: Build @affine/core selfhost
runs-on: ubuntu-latest
environment: ${{ github.event.inputs.flavor }}
steps:
@@ -88,6 +88,7 @@ jobs:
BUILD_TYPE: ${{ github.event.inputs.flavor }}
SHOULD_REPORT_TRACE: false
PUBLIC_PATH: '/'
SELF_HOSTED: true
- name: Download selfhost fonts
run: node ./scripts/download-blocksuite-fonts.mjs
- name: Upload core artifact
@@ -275,9 +276,9 @@ jobs:
R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
ENABLE_CAPTCHA: true
CAPTCHA_TURNSTILE_SECRET: ${{ secrets.CAPTCHA_TURNSTILE_SECRET }}
OAUTH_EMAIL_SENDER: ${{ secrets.OAUTH_EMAIL_SENDER }}
OAUTH_EMAIL_LOGIN: ${{ secrets.OAUTH_EMAIL_LOGIN }}
OAUTH_EMAIL_PASSWORD: ${{ secrets.OAUTH_EMAIL_PASSWORD }}
MAILER_SENDER: ${{ secrets.OAUTH_EMAIL_SENDER }}
MAILER_USER: ${{ secrets.OAUTH_EMAIL_LOGIN }}
MAILER_PASSWORD: ${{ secrets.OAUTH_EMAIL_PASSWORD }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
AFFINE_GOOGLE_CLIENT_ID: ${{ secrets.AFFINE_GOOGLE_CLIENT_ID }}
AFFINE_GOOGLE_CLIENT_SECRET: ${{ secrets.AFFINE_GOOGLE_CLIENT_SECRET }}

View File

@@ -24,7 +24,7 @@ jobs:
token: ${{ secrets.HELM_RELEASER_TOKEN }}
- name: Install Helm
uses: azure/setup-helm@v3
uses: azure/setup-helm@v4
- name: Install chart releaser
run: |

View File

@@ -9,4 +9,4 @@ jobs:
add-reviews:
runs-on: ubuntu-latest
steps:
- uses: kentaro-m/auto-assign-action@v1.2.5
- uses: kentaro-m/auto-assign-action@v2.0.0

View File

@@ -7,6 +7,10 @@ on:
schedule:
- cron: '0 9 * * *'
permissions:
contents: write
pull-requests: write
jobs:
dispatch-release-desktop:
runs-on: ubuntu-latest

View File

@@ -68,15 +68,13 @@ jobs:
make-distribution:
strategy:
# all combinations: macos-latest x64, macos-latest arm64, ubuntu-latest x64
# For windows, we need a separate approach
matrix:
spec:
- runner: macos-latest
- runner: macos-14
platform: darwin
arch: x64
target: x86_64-apple-darwin
- runner: macos-latest
- runner: macos-14
platform: darwin
arch: arm64
target: aarch64-apple-darwin
@@ -132,18 +130,23 @@ jobs:
SKIP_WEB_BUILD: 1
HOIST_NODE_MODULES: 1
- name: signing DMG
if: ${{ matrix.spec.platform == 'darwin' }}
run: |
codesign --force --sign "Developer ID Application: TOEVERYTHING PTE. LTD." packages/frontend/electron/out/${{ env.BUILD_TYPE }}/make/AFFiNE.dmg
- name: Save artifacts (mac)
if: ${{ matrix.spec.platform == 'darwin' }}
run: |
mkdir -p builds
mv packages/frontend/electron/out/*/make/*.dmg ./builds/affine-${{ env.BUILD_TYPE }}-macos-${{ matrix.spec.arch }}.dmg
mv packages/frontend/electron/out/*/make/zip/darwin/${{ matrix.spec.arch }}/*.zip ./builds/affine-${{ env.BUILD_TYPE }}-macos-${{ matrix.spec.arch }}.zip
mv packages/frontend/electron/out/*/make/*.dmg ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-macos-${{ matrix.spec.arch }}.dmg
mv packages/frontend/electron/out/*/make/zip/darwin/${{ matrix.spec.arch }}/*.zip ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-macos-${{ matrix.spec.arch }}.zip
- name: Save artifacts (linux)
if: ${{ matrix.spec.platform == 'linux' }}
run: |
mkdir -p builds
mv packages/frontend/electron/out/*/make/zip/linux/x64/*.zip ./builds/affine-${{ env.BUILD_TYPE }}-linux-x64.zip
mv packages/frontend/electron/out/*/make/AppImage/x64/*.AppImage ./builds/affine-${{ env.BUILD_TYPE }}-linux-x64.AppImage
mv packages/frontend/electron/out/*/make/zip/linux/x64/*.zip ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-linux-x64.zip
mv packages/frontend/electron/out/*/make/*.AppImage ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-linux-x64.appimage
- name: Upload Artifact
uses: actions/upload-artifact@v4
@@ -153,8 +156,6 @@ jobs:
package-distribution-windows:
strategy:
# all combinations: macos-latest x64, macos-latest arm64, ubuntu-latest x64
# For windows, we need a separate approach
matrix:
spec:
- runner: windows-latest
@@ -228,8 +229,6 @@ jobs:
make-windows-installer:
needs: sign-packaged-artifacts-windows
strategy:
# all combinations: macos-latest x64, macos-latest arm64, ubuntu-latest x64
# For windows, we need a separate approach
matrix:
spec:
- runner: windows-latest
@@ -279,10 +278,8 @@ jobs:
artifact-name: installer-win32-x64
finalize-installer-windows:
needs: sign-installer-artifacts-windows
needs: [sign-installer-artifacts-windows, before-make]
strategy:
# all combinations: macos-latest x64, macos-latest arm64, ubuntu-latest x64
# For windows, we need a separate approach
matrix:
spec:
- runner: windows-latest
@@ -302,9 +299,9 @@ jobs:
- name: Save artifacts
run: |
mkdir -p builds
mv packages/frontend/electron/out/*/make/zip/win32/x64/AFFiNE*-win32-x64-*.zip ./builds/affine-${{ env.BUILD_TYPE }}-windows-x64.zip
mv packages/frontend/electron/out/*/make/squirrel.windows/x64/*.exe ./builds/affine-${{ env.BUILD_TYPE }}-windows-x64.exe
mv packages/frontend/electron/out/*/make/squirrel.windows/x64/*.msi ./builds/affine-${{ env.BUILD_TYPE }}-windows-x64.msi
mv packages/frontend/electron/out/*/make/zip/win32/x64/AFFiNE*-win32-x64-*.zip ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-windows-x64.zip
mv packages/frontend/electron/out/*/make/squirrel.windows/x64/*.exe ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-windows-x64.exe
mv packages/frontend/electron/out/*/make/squirrel.windows/x64/*.msi ./builds/affine-${{ needs.before-make.outputs.RELEASE_VERSION }}-${{ env.BUILD_TYPE }}-windows-x64.msi
- name: Upload Artifact
uses: actions/upload-artifact@v4
@@ -365,7 +362,7 @@ jobs:
./*.zip
./*.dmg
./*.exe
./*.AppImage
./*.appimage
./*.apk
./*.yml
- name: Create Nightly Release Draft
@@ -387,6 +384,6 @@ jobs:
./*.zip
./*.dmg
./*.exe
./*.AppImage
./*.appimage
./*.apk
./*.yml

View File

@@ -15,7 +15,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Publish
uses: cloudflare/wrangler-action@v3.4.0
uses: cloudflare/wrangler-action@v3.4.1
with:
apiToken: ${{ secrets.CF_API_TOKEN }}
accountId: ${{ secrets.CF_ACCOUNT_ID }}

3
.gitignore vendored
View File

@@ -79,3 +79,6 @@ lib
affine.db
apps/web/next-routes.conf
.nx
packages/frontend/templates/edgeless
packages/frontend/core/public/static/templates

2
.nvmrc
View File

@@ -1 +1 @@
18
20

View File

@@ -16,6 +16,7 @@ packages/frontend/i18n/src/i18n-generated.ts
packages/frontend/graphql/src/graphql/index.ts
tests/affine-legacy/**/static
.yarnrc.yml
packages/frontend/templates/edgeless-templates.gen.ts
packages/frontend/templates/templates.gen.ts
packages/frontend/templates/onboarding

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -12,4 +12,4 @@ npmPublishAccess: public
npmPublishRegistry: "https://registry.npmjs.org"
yarnPath: .yarn/releases/yarn-4.0.2.cjs
yarnPath: .yarn/releases/yarn-4.1.1.cjs

1004
Cargo.lock generated

File diff suppressed because it is too large Load Diff

130
README.md
View File

@@ -5,86 +5,89 @@
Write, Draw and Plan All at Once
<br>
</h1>
<p>
One hyper-fused platform for wildly creative minds. <br />
A privacy-focussed, local-first, open-source, and ready-to-use alternative for Notion & Miro.
<a href="https://affine.pro/download">
<img alt="affine logo" src="https://cdn.affine.pro/Github_hero_image1.png" style="width: 100%">
</a>
<br/>
<p align="center">
A privacy-focussed, local-first, open-source, and ready-to-use alternative for Notion & Miro. <br />
One hyper-fused platform for wildly creative minds.
</p>
</div>
<br/>
<br/>
<a href="https://www.producthunt.com/posts/affine-3?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-affine&#0045;3" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=440671&theme=light" alt="AFFiNE - One&#0032;app&#0032;for&#0032;all&#0032;&#0045;&#0032;Where&#0032;Notion&#0032;meets&#0032;Miro | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
<br/>
<br/>
<div align="center">
[![AFFiNE Web](<https://img.shields.io/badge/-Try%20It%20Online%20%E2%86%92-rgb(84,56,255)?style=flat-square&logoColor=white&logo=affine>)](https://app.affine.pro)
[![AFFiNE macOS M1/M2 Chip](https://img.shields.io/badge/-macOS_M_Chip%20%E2%86%92-black?style=flat-square&logo=apple&logoColor=white)](https://affine.pro/download)
[![AFFiNE macOS x64](https://img.shields.io/badge/-macOS_x86%20%E2%86%92-black?style=flat-square&logo=apple&logoColor=white)](https://affine.pro/download)
[![AFFiNE Window x64](https://img.shields.io/badge/-Windows%20%E2%86%92-blue?style=flat-square&logo=windows&logoColor=white)](https://affine.pro/download)
[![AFFiNE Linux](https://img.shields.io/badge/-Linux%20%E2%86%92-yellow?style=flat-square&logo=linux&logoColor=white)](https://affine.pro/download)
<a href="https://affine.pro">Home Page</a> |
<a href="https://discord.com/invite/yz6tGVsf5p">Discord</a> |
<a href="https://app.affine.pro">Live Demo</a> |
<a href="https://affine.pro/blog/">Blog</a> |
<a href="https://docs.affine.pro/docs/">Documentation</a>
</div>
<br/>
[![Releases](https://img.shields.io/github/downloads/toeverything/AFFiNE/total)](https://github.com/toeverything/AFFiNE/releases/latest)
[![stars-icon]](https://github.com/toeverything/AFFiNE)
[![All Contributors][all-contributors-badge]](#contributors)
[![codecov]](https://codecov.io/gh/toeverything/AFFiNE)
[![Node-version-icon]](https://nodejs.org/)
[![TypeScript-version-icon]](https://www.typescriptlang.org/)
[![React-version-icon]](https://reactjs.org/)
[![blocksuite-icon]](https://github.com/toeverything/blocksuite)
[![Rust-version-icon]](https://www.rust-lang.org/)
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftoeverything%2FAFFiNE.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftoeverything%2FAFFiNE?ref=badge_shield)
[![Deploy](https://github.com/toeverything/AFFiNE/actions/workflows/deploy.yml/badge.svg)](https://github.com/toeverything/AFFiNE/actions/workflows/deploy.yml)
</div>
---
<div align="center">
<a href="http://affine.pro"><img src="https://img.shields.io/badge/-AFFiNE-06449d?style=social&logo=affine" height=25></a>
&nbsp;
<a href="https://community.affine.pro"><img src="https://img.shields.io/badge/-Community-424549?style=social&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAXNJREFUWEftlitLRUEURtdVEVExWUx2qxgNVouoXYtNDP4Tw20WtftAsItZrHaTYBJREZ98MAc248wcZxi4CGfSeezHmm/23kyPAa/egPPTAXQK/FsFBP7ldVDRZoqcgO9I+2bHy3ZIJBfTCPCZM1tqAxwBmzUBrNQNbEx+5b0B5oEN4NCBrAMnMaiUAuPAs3HU82TLEZwBqwGbaJ4UgKQ8CFR6SoEl4LIWwCJwZQCegKkWBWLHVKSActvdzgG3DqitDf3/VQBskBDALrDnAKXUo3ueAF5KinAf2DKOmnzD7l214bdbA6hC1XHZNQa8hSBC0hwDa57xDHDvvvWB7ciOZoE79+8CWPbsBGc769eFxJdWIKcuyIdRoG3W7AAC1dJkHDIOo8B78+4rEBo8r4AkLFk6Jk3HaeDBBTgHVmIAfpJUz+cAFXVBreQCvQYW/lqEjV1NAMUMqpAaxQMHyDnjYtuS+0BxstwaqJooFqxToFPgB5FuPCEB6XK2AAAAAElFTkSuQmCC" height=25></a>
&nbsp;
<a href="https://discord.com/invite/yz6tGVsf5p"><img src="https://img.shields.io/badge/-Discord-424549?style=social&logo=discord" height=25></a>
&nbsp;
<a href="https://t.me/affineworkos"><img src="https://img.shields.io/badge/-Telegram-red?style=social&logo=telegram" height=25></a>
&nbsp;
<a href="https://twitter.com/AffineOfficial"><img src="https://img.shields.io/badge/-Twitter-red?style=social&logo=twitter" height=25></a>
&nbsp;
<a href="https://medium.com/@affineworkos"><img src="https://img.shields.io/badge/-Medium-red?style=social&logo=medium" height=25></a>
</div>
<br />
<div align="center">
<em>Docs, canvas and tables are hyper-merged with AFFiNE - just like the word affine (əˈɪn | a-fine).</em>
</div>
<br />
![img_v2_37a7cc04-ab3f-4405-ae9a-f84ceb4c948g](https://user-images.githubusercontent.com/79301703/230892907-5fd5c0c5-1665-4d75-8a35-744e0afc36a5.gif)
## Join our community
Before we tell you how to get started with AFFiNE, we'd like to shamelessly plug our awesome user and developer communities across [official social platforms](https://community.affine.pro/c/start-here/)! Once youre familiar with using the software, maybe you will share your wisdom with others and even consider joining the [AFFiNE Ambassador program](https://community.affine.pro/c/start-here/affine-ambassador) to help spread AFFiNE to the world.
<div align="center">
<img src="https://github.com/toeverything/AFFiNE/assets/79301703/49a426bb-8d2b-4216-891a-fa5993642253" style="width: 100%"/>
</div>
## Getting started & staying tuned with us.
⚠️ Please note that AFFiNE is still under active development and is not yet ready for production use. ⚠️
[![affine.pro](https://img.shields.io/static/v1?label=Try%20it%20Online&logo=affine&message=%E2%86%92&style=for-the-badge)](https://app.affine.pro) No installation or registration required! Head over to our website and try it out now.
[![community.affine.pro](https://img.shields.io/static/v1?label=Join%20the%20community&message=%E2%86%92&style=for-the-badge)](https://community.affine.pro) Our wonderful community, where you can meet and engage with the team, developers and other like-minded enthusiastic user of AFFiNE.
Star us, and you will receive all releases notifications from GitHub without any delay!
![rbU3YmmsQT](https://user-images.githubusercontent.com/79301703/230891830-0110681e-8c7e-483b-b6d9-9e42b291b9ef.gif)
<img src="https://user-images.githubusercontent.com/79301703/230891830-0110681e-8c7e-483b-b6d9-9e42b291b9ef.gif" style="width: 100%"/>
## What is AFFiNE
AFFiNE is an open-source, all-in-one workspace and an operating system for all the building blocks that assemble your knowledge base and much more -- wiki, knowledge management, presentation and digital assets. It's a better alternative to Notion and Miro.
## Features
- **Hyper merged** — Write, draw and plan all at once. Assemble any blocks you love on any canvas you like to enjoy seamless transitions between workflows with AFFiNE.
- **Privacy focussed** — AFFiNE is built with your privacy in mind and is one of our key concerns. We want you to keep control of your data, allowing you to store it as you like, where you like while still being able to freely edit and view your data on-demand.
- **Offline-first** — With your privacy in mind we also decided to go offline-first. This means that AFFiNE can be used offline, whether you want to view or edit, with support for conflict-free merging when you are back online.
- **Clean, intuitive design** — With AFFiNE you can concentrate on editing with a clean and modern interface. Which is responsive, so it looks great on tablets too, and mobile support is coming in the future.
- **Modern Block Editor with Markdown support** — A modern block editor can help you not only for docs, but slides and tables as well. When you write in AFFiNE you can use Markdown syntax which helps create an easier editing experience, that can be experienced with just a keyboard. And this allows you to export your data cleanly into Markdown.
- **Collaboration** — Whether you want to collaborate with yourself across multiple devices, or work together with others, support for collaboration and multiplayer is out-of-the-box, which makes it easy for teams to get started with AFFiNE.
- **Choice of multiple languages** — Thanks to community contributions AFFiNE offers support for multiple languages. If you don't find your language or would like to suggest some changes we welcome your contributions.
**A true canvas for blocks in any form. Docs and whiteboard are now fully merged.**
![img_v2_3a4ee0da-6dd7-48cb-8f19-5411f86768ag](https://user-images.githubusercontent.com/79301703/230893796-dc707955-e4e5-4a42-a3c9-18d1ea754f6f.gif)
- Many editor apps claim to be a canvas for productivity, but AFFiNE is one of the very few which allows you to put any building block on an edgeless canvas -- rich text, sticky notes, any embedded web pages, multi-view databases, linked pages, shapes and even slides. We have it all.
**Multimodal AI partner ready to kick in any work**
- Write up professional work report? Turn an outline into expressive and presentable slides? Summary an article into a well-structured mindmap? Sorting your job plan and backlog for tasks? Or....draw and code prototype apps and web pages directly all with one prompt? With you, AFFiNE AI pushes your creativity to the edge of your imagination.
**Local-first & Real-time collaborative**
- We love the idea of local-first that you always own your data on your disk, in spite of the cloud. Furthermore, AFFiNE supports real-time sync and collaborations on web and cross-platform clients.
**Self-host & Shape your own AFFiNE**
- You have the freedom to manage, self-host, fork and build your own AFFiNE. Plugin community and third-party blocks is coming soon. More tractions on [Blocksuite](block-suite.com). Check there to learn how to [self-host AFFiNE](https://docs.affine.pro/docs/self-host-affine-).
## Acknowledgement
“We shape our tools and thereafter our tools shape us”. A lot of pioneers have inspired us along the way, e.g.:
- Quip & Notion with their great concept of “everything is a block”
- Trello with their Kanban
- Airtable & Miro with their no-code programable datasheets
- Miro & Whimiscal with their edgeless visual whiteboard
- Remnote & Capacities with their object-based tag system
There is a large overlap of their atomic “building blocks” between these apps. They are not open source, nor do they have a plugin system like Vscode for contributors to customize. We want to have something that contains all the features we love and also goes one step even further.
Thanks for checking us out, we appreciate your interest and sincerely hope that AFFiNE resonates with you! 🎵 Checking https://affine.pro/ for more details ions.
## Contributing
@@ -117,7 +120,7 @@ If you have questions, you are welcome to contact us. One of the best places to
We would also like to give thanks to open-source projects that make AFFiNE possible:
- [blocksuite](https://github.com/toeverything/BlockSuite) - 💠 BlockSuite is the open-source collaborative editor project behind AFFiNE.
- [Blocksuite](https://github.com/toeverything/BlockSuite) - 💠 BlockSuite is the open-source collaborative editor project behind AFFiNE.
- [OctoBase](https://github.com/toeverything/OctoBase) - 🐙 OctoBase is the open-source database behind AFFiNE, local-first, yet collaborative. A light-weight, scalable, data engine written in Rust.
- [yjs](https://github.com/yjs/yjs) - Fundamental support of CRDTs for our implementation on state management and data sync.
- [electron](https://github.com/electron/electron) - Build cross-platform desktop apps with JavaScript, HTML, and CSS.
@@ -140,20 +143,11 @@ We would like to express our gratitude to all the individuals who have already c
## Self-Host
> We know that the self-host version has been out of date for a long time.
>
> We are working hard to get this updated to the latest version, you can try our desktop version first.
Get started with Docker and deploy your own feature-rich, restriction-free deployment of AFFiNE.
We are working hard to get this updated to the latest version, you can keep an eye on the [latest packages].
Begin with Docker to deploy your own feature-rich, unrestricted version of AFFiNE. Our team is diligently updating to the latest version. For more information on how to self-host AFFiNE, please refer to our [documentation](https://docs.affine.pro/docs/self-host-affine-).
## Hiring
Some amazing companies including AFFiNE are looking for developers! Are you interested in helping build with AFFiNE and/or its partners? Check out some of the latest [jobs available].
## Upgrading
For upgrading information, please see our [update page].
Some amazing companies including AFFiNE are looking for developers! Are you interesgo to iour discord channel AFFiNE and/or its partners? Check out some of the latest [jobs available].
## Feature Request
@@ -185,8 +179,6 @@ Thanks to [Chromatic](https://www.chromatic.com/) for providing the visual testi
See [LICENSE] for details.
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftoeverything%2FAFFiNE.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftoeverything%2FAFFiNE?ref=badge_large)
[all-contributors-badge]: https://img.shields.io/github/contributors/toeverything/AFFiNE
[license]: ./LICENSE
[building.md]: ./docs/BUILDING.md
@@ -194,7 +186,7 @@ See [LICENSE] for details.
[jobs available]: ./docs/jobs.md
[latest packages]: https://github.com/toeverything/AFFiNE/pkgs/container/affine-self-hosted
[contributor license agreement]: https://github.com/toeverything/affine/edit/canary/.github/CLA.md
[rust-version-icon]: https://img.shields.io/badge/Rust-1.75.0-dea584
[rust-version-icon]: https://img.shields.io/badge/Rust-1.76.0-dea584
[stars-icon]: https://img.shields.io/github/stars/toeverything/AFFiNE.svg?style=flat&logo=github&colorB=red&label=stars
[codecov]: https://codecov.io/gh/toeverything/affine/branch/canary/graphs/badge.svg?branch=canary
[node-version-icon]: https://img.shields.io/badge/node-%3E=18.16.1-success

29
SECURITY.md Normal file
View File

@@ -0,0 +1,29 @@
# Security Policy
## Supported Versions
We recommend users to always use the latest major version. Security updates will be provided for the current major version until the next major version is released.
| Version | Supported |
| --------------- | ------------------ |
| 0.12.x (stable) | :white_check_mark: |
| < 0.12.x | :x: |
## Reporting a Vulnerability
We welcome you to provide us with bug reports via and email at [security@toeverything.info](mailto:security@toeverything.info). We expect your report to contain at least the following for us to evaluate and reproduce:
1. Using platform and version, for example:
- macos arm64 0.12.0-canary-202402220729-0868ac6
- app.affine.pro 0.12.0-canary-202402220729-0868ac6
2. A sets of video or screenshot containing the reproduce steps that proves you successfully exploited the vulnerability, preferably including the time and software version of the successful exploit.
3. Your classification or analysis of the vulnerability (optional)
Since we are an open source project, we also welcome you to provide corresponding fix PRs.
We will provide bounties for vulnerabilities involving user information leakage, permission leakage, and unauthorized code execution. For other types of vulnerabilities, we will determine specific rewards based on the evaluation results.
If the vulnerability is caused by a library we depend on, we encourage you to submit a security report to the corresponding dependent library at the same time to benefit more users.

View File

@@ -29,7 +29,7 @@ It includes the global constants, browser and system check.
This package should be imported at the very beginning of the entry point.
### `@affine/workspace`
### `@affine/workspace-impl`
Current we have two workspace plugin:

View File

@@ -59,9 +59,9 @@ You may need additional env for auth login. You may want to put your own one if
For email login & password, please refer to https://nodemailer.com/usage/using-gmail/
```
OAUTH_EMAIL_SENDER=
OAUTH_EMAIL_LOGIN=
OAUTH_EMAIL_PASSWORD=
MAILER_SENDER=
MAILER_USER=
MAILER_PASSWORD=
OAUTH_GOOGLE_ENABLED="true"
OAUTH_GOOGLE_CLIENT_ID=
OAUTH_GOOGLE_CLIENT_SECRET=

View File

@@ -7,9 +7,9 @@
"dev": "nodemon --exec 'typedoc --options ../../typedoc.json' & serve dist/"
},
"devDependencies": {
"nodemon": "^3.0.1",
"nodemon": "^3.1.0",
"serve": "^14.2.1",
"typedoc": "^0.25.4"
"typedoc": "^0.25.8"
},
"nodemonConfig": {
"watch": [

View File

@@ -14,7 +14,7 @@
"tests/affine-legacy/*"
],
"engines": {
"node": ">=18.16.1 <19.0.0"
"node": "<21.0.0"
},
"scripts": {
"dev": "dev-core",
@@ -36,7 +36,7 @@
"test": "vitest --run",
"test:ui": "vitest --ui",
"test:coverage": "vitest run --coverage",
"typecheck": "tsc -b tsconfig.json --diagnostics",
"typecheck": "tsc -b tsconfig.json",
"postinstall": "node ./scripts/check-version.mjs && yarn i18n-codegen gen && yarn husky install",
"prepare": "husky"
},
@@ -56,61 +56,60 @@
"devDependencies": {
"@affine-test/kit": "workspace:*",
"@affine/cli": "workspace:*",
"@commitlint/cli": "^18.4.3",
"@commitlint/config-conventional": "^18.4.3",
"@faker-js/faker": "^8.3.1",
"@commitlint/cli": "^19.0.0",
"@commitlint/config-conventional": "^19.0.0",
"@faker-js/faker": "^8.4.1",
"@istanbuljs/schema": "^0.1.3",
"@magic-works/i18n-codegen": "^0.5.0",
"@nx/vite": "17.2.8",
"@playwright/test": "^1.41.0",
"@taplo/cli": "^0.5.2",
"@testing-library/react": "^14.1.2",
"@nx/vite": "18.0.7",
"@playwright/test": "^1.41.2",
"@taplo/cli": "^0.7.0",
"@testing-library/react": "^14.2.1",
"@toeverything/infra": "workspace:*",
"@types/affine__env": "workspace:*",
"@types/eslint": "^8.44.7",
"@types/node": "^20.9.3",
"@typescript-eslint/eslint-plugin": "^6.13.1",
"@typescript-eslint/parser": "^6.13.1",
"@vanilla-extract/vite-plugin": "^3.9.2",
"@vanilla-extract/webpack-plugin": "^2.3.1",
"@vitejs/plugin-react-swc": "^3.5.0",
"@vitest/coverage-istanbul": "1.1.3",
"@vitest/ui": "1.1.3",
"electron": "^28.1.4",
"eslint": "^8.54.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-i": "^2.29.0",
"@types/eslint": "^8.56.3",
"@types/node": "^20.11.20",
"@typescript-eslint/eslint-plugin": "^7.0.2",
"@typescript-eslint/parser": "^7.0.2",
"@vanilla-extract/vite-plugin": "^4.0.4",
"@vanilla-extract/webpack-plugin": "^2.3.6",
"@vitejs/plugin-react-swc": "^3.6.0",
"@vitest/coverage-istanbul": "1.3.1",
"@vitest/ui": "1.3.1",
"electron": "^29.0.1",
"eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-i": "^2.29.1",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-simple-import-sort": "^10.0.0",
"eslint-plugin-sonarjs": "^0.23.0",
"eslint-plugin-unicorn": "^50.0.0",
"eslint-plugin-unused-imports": "^3.0.0",
"eslint-plugin-vue": "^9.18.1",
"eslint-plugin-simple-import-sort": "^12.0.0",
"eslint-plugin-sonarjs": "^0.24.0",
"eslint-plugin-unicorn": "^51.0.1",
"eslint-plugin-unused-imports": "^3.1.0",
"eslint-plugin-vue": "^9.22.0",
"fake-indexeddb": "5.0.2",
"happy-dom": "^13.0.0",
"husky": "^9.0.6",
"lint-staged": "^15.1.0",
"msw": "^2.0.8",
"nanoid": "^5.0.3",
"nx": "^17.2.8",
"happy-dom": "^13.4.1",
"husky": "^9.0.11",
"lint-staged": "^15.2.2",
"msw": "^2.2.1",
"nanoid": "^5.0.6",
"nx": "^18.0.4",
"nyc": "^15.1.0",
"oxlint": "0.0.22",
"prettier": "^3.1.0",
"semver": "^7.5.4",
"prettier": "^3.2.5",
"semver": "^7.6.0",
"serve": "^14.2.1",
"string-width": "^7.0.0",
"ts-node": "^10.9.1",
"typescript": "^5.3.2",
"vite": "^5.0.6",
"string-width": "^7.1.0",
"ts-node": "^10.9.2",
"typescript": "^5.3.3",
"vite": "^5.1.4",
"vite-plugin-istanbul": "^5.0.0",
"vite-plugin-static-copy": "^1.0.0",
"vite-tsconfig-paths": "^4.2.1",
"vitest": "1.1.3",
"vite-plugin-static-copy": "^1.0.1",
"vitest": "1.3.1",
"vitest-fetch-mock": "^0.2.2",
"vitest-mock-extended": "^1.3.1"
},
"packageManager": "yarn@4.0.2",
"packageManager": "yarn@4.1.1",
"resolutions": {
"vite": "^5.0.6",
"array-buffer-byte-length": "npm:@nolyfill/array-buffer-byte-length@latest",
@@ -169,8 +168,8 @@
"which-boxed-primitive": "npm:@nolyfill/which-boxed-primitive@latest",
"which-typed-array": "npm:@nolyfill/which-typed-array@latest",
"next-auth@^4.24.5": "patch:next-auth@npm%3A4.24.5#~/.yarn/patches/next-auth-npm-4.24.5-8428e11927.patch",
"@reforged/maker-appimage/@electron-forge/maker-base": "7.2.0",
"macos-alias": "npm:macos-alias-building@latest",
"@reforged/maker-appimage/@electron-forge/maker-base": "7.3.0",
"macos-alias": "npm:@napi-rs/macos-alias@latest",
"fs-xattr": "npm:@napi-rs/xattr@latest",
"@radix-ui/react-dialog": "npm:@radix-ui/react-dialog@latest"
}

View File

@@ -9,57 +9,57 @@
},
"scripts": {
"build": "tsc",
"start": "node --loader ts-node/esm/transpile-only.mjs --es-module-specifier-resolution node ./src/index.ts",
"start": "node --loader ts-node/esm/transpile-only.mjs ./src/index.ts",
"dev": "nodemon ./src/index.ts",
"test": "ava --concurrency 1 --serial",
"test:coverage": "c8 ava --concurrency 1 --serial",
"postinstall": "prisma generate",
"data-migration": "node --loader ts-node/esm/transpile-only.mjs --es-module-specifier-resolution node ./src/data/index.ts",
"predeploy": "yarn prisma migrate deploy && node --es-module-specifier-resolution node ./dist/data/index.js run"
"data-migration": "node --loader ts-node/esm/transpile-only.mjs ./src/data/index.ts",
"predeploy": "yarn prisma migrate deploy && node --import ./scripts/register.js ./dist/data/index.js run"
},
"dependencies": {
"@apollo/server": "^4.9.5",
"@auth/prisma-adapter": "^1.0.7",
"@aws-sdk/client-s3": "^3.499.0",
"@apollo/server": "^4.10.0",
"@auth/prisma-adapter": "^1.4.0",
"@aws-sdk/client-s3": "^3.515.0",
"@google-cloud/opentelemetry-cloud-monitoring-exporter": "^0.17.0",
"@google-cloud/opentelemetry-cloud-trace-exporter": "^2.1.0",
"@google-cloud/opentelemetry-resource-util": "^2.1.0",
"@keyv/redis": "^2.8.0",
"@nestjs/apollo": "^12.0.11",
"@nestjs/common": "^10.2.10",
"@nestjs/core": "^10.2.10",
"@nestjs/event-emitter": "^2.0.3",
"@nestjs/graphql": "^12.0.11",
"@nestjs/platform-express": "^10.2.10",
"@nestjs/platform-socket.io": "^10.2.10",
"@nestjs/schedule": "^4.0.0",
"@nestjs/serve-static": "^4.0.0",
"@keyv/redis": "^2.8.4",
"@nestjs/apollo": "^12.1.0",
"@nestjs/common": "^10.3.3",
"@nestjs/core": "^10.3.3",
"@nestjs/event-emitter": "^2.0.4",
"@nestjs/graphql": "^12.1.1",
"@nestjs/platform-express": "^10.3.3",
"@nestjs/platform-socket.io": "^10.3.3",
"@nestjs/schedule": "^4.0.1",
"@nestjs/serve-static": "^4.0.1",
"@nestjs/throttler": "^5.0.1",
"@nestjs/websockets": "^10.2.10",
"@node-rs/argon2": "^1.5.2",
"@node-rs/crc32": "^1.7.2",
"@node-rs/jsonwebtoken": "^0.3.0",
"@nestjs/websockets": "^10.3.3",
"@node-rs/argon2": "^1.7.2",
"@node-rs/crc32": "^1.9.2",
"@node-rs/jsonwebtoken": "^0.5.0",
"@opentelemetry/api": "^1.7.0",
"@opentelemetry/core": "^1.20.0",
"@opentelemetry/exporter-prometheus": "^0.47.0",
"@opentelemetry/exporter-zipkin": "^1.20.0",
"@opentelemetry/host-metrics": "^0.34.0",
"@opentelemetry/instrumentation": "^0.47.0",
"@opentelemetry/instrumentation-graphql": "^0.36.0",
"@opentelemetry/instrumentation-http": "^0.47.0",
"@opentelemetry/instrumentation-ioredis": "^0.36.0",
"@opentelemetry/instrumentation-nestjs-core": "^0.33.3",
"@opentelemetry/instrumentation-socket.io": "^0.35.0",
"@opentelemetry/resources": "^1.20.0",
"@opentelemetry/sdk-metrics": "^1.20.0",
"@opentelemetry/sdk-node": "^0.47.0",
"@opentelemetry/sdk-trace-node": "^1.20.0",
"@opentelemetry/semantic-conventions": "^1.20.0",
"@prisma/client": "^5.7.1",
"@prisma/instrumentation": "^5.7.1",
"@opentelemetry/core": "^1.21.0",
"@opentelemetry/exporter-prometheus": "^0.49.0",
"@opentelemetry/exporter-zipkin": "^1.21.0",
"@opentelemetry/host-metrics": "^0.35.0",
"@opentelemetry/instrumentation": "^0.49.0",
"@opentelemetry/instrumentation-graphql": "^0.37.0",
"@opentelemetry/instrumentation-http": "^0.49.0",
"@opentelemetry/instrumentation-ioredis": "^0.37.0",
"@opentelemetry/instrumentation-nestjs-core": "^0.34.0",
"@opentelemetry/instrumentation-socket.io": "^0.36.0",
"@opentelemetry/resources": "^1.21.0",
"@opentelemetry/sdk-metrics": "^1.21.0",
"@opentelemetry/sdk-node": "^0.49.0",
"@opentelemetry/sdk-trace-node": "^1.21.0",
"@opentelemetry/semantic-conventions": "^1.21.0",
"@prisma/client": "^5.10.2",
"@prisma/instrumentation": "^5.10.2",
"@socket.io/redis-adapter": "^8.2.1",
"cookie-parser": "^1.4.6",
"dotenv": "^16.3.1",
"dotenv": "^16.4.5",
"dotenv-cli": "^7.3.0",
"express": "^4.18.2",
"file-type": "^19.0.0",
@@ -71,50 +71,50 @@
"ioredis": "^5.3.2",
"keyv": "^4.5.4",
"lodash-es": "^4.17.21",
"nanoid": "^5.0.3",
"nest-commander": "^3.12.2",
"nanoid": "^5.0.6",
"nest-commander": "^3.12.5",
"nestjs-throttler-storage-redis": "^0.4.1",
"next-auth": "^4.24.5",
"nodemailer": "^6.9.7",
"nodemailer": "^6.9.10",
"on-headers": "^1.0.2",
"parse-duration": "^1.1.0",
"pretty-time": "^1.1.0",
"prisma": "^5.7.1",
"prom-client": "^15.0.0",
"reflect-metadata": "^0.2.0",
"prisma": "^5.10.2",
"prom-client": "^15.1.0",
"reflect-metadata": "^0.2.1",
"rxjs": "^7.8.1",
"semver": "^7.5.4",
"socket.io": "^4.7.2",
"stripe": "^14.5.0",
"ws": "^8.14.2",
"yjs": "^13.6.10",
"semver": "^7.6.0",
"socket.io": "^4.7.4",
"stripe": "^14.18.0",
"ts-node": "^10.9.2",
"typescript": "^5.3.3",
"ws": "^8.16.0",
"yjs": "^13.6.12",
"zod": "^3.22.4"
},
"devDependencies": {
"@affine-test/kit": "workspace:*",
"@affine/storage": "workspace:*",
"@napi-rs/image": "^1.7.0",
"@nestjs/testing": "^10.2.10",
"@napi-rs/image": "^1.9.1",
"@nestjs/testing": "^10.3.3",
"@types/cookie-parser": "^1.4.6",
"@types/engine.io": "^3.1.10",
"@types/express": "^4.17.21",
"@types/graphql-upload": "^16.0.5",
"@types/graphql-upload": "^16.0.7",
"@types/keyv": "^4.2.0",
"@types/lodash-es": "^4.17.11",
"@types/node": "^20.9.3",
"@types/lodash-es": "^4.17.12",
"@types/node": "^20.11.20",
"@types/nodemailer": "^6.4.14",
"@types/on-headers": "^1.0.3",
"@types/pretty-time": "^1.1.5",
"@types/sinon": "^17.0.2",
"@types/supertest": "^6.0.0",
"@types/sinon": "^17.0.3",
"@types/supertest": "^6.0.2",
"@types/ws": "^8.5.10",
"ava": "^6.0.0",
"c8": "^9.0.0",
"nodemon": "^3.0.1",
"ava": "^6.1.1",
"c8": "^9.1.0",
"nodemon": "^3.1.0",
"sinon": "^17.0.1",
"supertest": "^6.3.3",
"ts-node": "^10.9.1",
"typescript": "^5.3.2"
"supertest": "^6.3.4"
},
"ava": {
"timeout": "1m",
@@ -126,8 +126,7 @@
"--trace-sigint",
"--loader",
"ts-node/esm/transpile-only.mjs",
"--es-module-specifier-resolution",
"node"
"--es-module-specifier-resolution=node"
],
"files": [
"tests/**/*.spec.ts",
@@ -139,10 +138,11 @@
"environmentVariables": {
"TS_NODE_PROJECT": "./tests/tsconfig.json",
"NODE_ENV": "test",
"ENABLE_LOCAL_EMAIL": "true",
"OAUTH_EMAIL_LOGIN": "noreply@toeverything.info",
"OAUTH_EMAIL_PASSWORD": "affine",
"OAUTH_EMAIL_SENDER": "noreply@toeverything.info",
"MAILER_HOST": "0.0.0.0",
"MAILER_PORT": "1025",
"MAILER_USER": "noreply@toeverything.info",
"MAILER_PASSWORD": "affine",
"MAILER_SENDER": "noreply@toeverything.info",
"FEATURES_EARLY_ACCESS_PREVIEW": "false"
}
},
@@ -152,8 +152,7 @@
"nodeArgs": [
"--loader",
"ts-node/esm.mjs",
"--es-module-specifier-resolution",
"node"
"--es-module-specifier-resolution=node"
],
"ignore": [
"**/__tests__/**",
@@ -162,7 +161,6 @@
"env": {
"TS_NODE_TRANSPILE_ONLY": true,
"TS_NODE_PROJECT": "./tsconfig.json",
"NODE_ENV": "development",
"DEBUG": "affine:*",
"FORCE_COLOR": true,
"DEBUG_COLORS": true

View File

@@ -265,7 +265,9 @@ model Snapshot {
seq Int @default(0) @db.Integer
state Bytes? @db.ByteA
createdAt DateTime @default(now()) @map("created_at") @db.Timestamptz(6)
updatedAt DateTime @updatedAt @map("updated_at") @db.Timestamptz(6)
// the `updated_at` field will not record the time of record changed,
// but the created time of last seen update that has been merged into snapshot.
updatedAt DateTime @map("updated_at") @db.Timestamptz(6)
@@id([id, workspaceId])
@@map("snapshots")

View File

@@ -0,0 +1,11 @@
import { create, createEsmHooks } from 'ts-node';
const service = create({
experimentalSpecifierResolution: 'node',
transpileOnly: true,
logError: true,
skipProject: true,
});
const hooks = createEsmHooks(service);
export const resolve = hooks.resolve;

View File

@@ -0,0 +1,4 @@
import { register } from 'node:module';
import { pathToFileURL } from 'node:url';
register('./scripts/loader.js', pathToFileURL('./'));

View File

@@ -13,7 +13,10 @@ const configFiles = [
];
function configCleaner(content) {
return content.replace(/(\/\/#.*$)|(\/\/\s+TODO.*$)/gm, '');
return content.replace(
/(^\/\/#.*$)|(^\/\/\s+TODO.*$)|("use\sstrict";?)|(^.*eslint-disable.*$)/gm,
''
);
}
function prepare() {
@@ -39,11 +42,9 @@ function prepare() {
function runPredeployScript() {
console.log('running predeploy script.');
execSync('yarn predeploy', {
env: {
...process.env,
NODE_OPTIONS:
(process.env.NODE_OPTIONS ?? '') + ' --import ./dist/prelude.js',
},
encoding: 'utf-8',
env: process.env,
stdio: 'inherit',
});
}

View File

@@ -11,6 +11,7 @@ export class AppController {
return {
compatibility: this.config.version,
message: `AFFiNE ${this.config.version} Server`,
type: this.config.type,
flavor: this.config.flavor,
};
}

View File

@@ -29,6 +29,7 @@ import { MailModule } from './fundamentals/mailer';
import { MetricsModule } from './fundamentals/metrics';
import { PrismaModule } from './fundamentals/prisma';
import { SessionModule } from './fundamentals/session';
import { StorageProviderModule } from './fundamentals/storage';
import { RateLimiterModule } from './fundamentals/throttler';
import { WebSocketModule } from './fundamentals/websocket';
import { pluginsMap } from './plugins';
@@ -43,6 +44,7 @@ export const FunctionalityModules = [
RateLimiterModule,
SessionModule,
MailModule,
StorageProviderModule,
];
export class AppModuleBuilder {
@@ -109,7 +111,7 @@ export class AppModuleBuilder {
},
],
imports: this.modules,
controllers: this.config.flavor.selfhosted ? [] : [AppController],
controllers: this.config.isSelfhosted ? [] : [AppController],
})
class AppModule {}
@@ -132,9 +134,9 @@ function buildAppModule() {
// sync server only
.useIf(config => config.flavor.sync, SyncModule)
// main server only
// graphql server only
.useIf(
config => config.flavor.main,
config => config.flavor.graphql,
ServerConfigModule,
WebSocketModule,
GqlModule,
@@ -147,7 +149,7 @@ function buildAppModule() {
// self hosted server only
.useIf(
config => config.flavor.selfhosted,
config => config.isSelfhosted,
ServeStaticModule.forRoot({
rootPath: join('/app', 'static'),
})

View File

@@ -4,9 +4,8 @@ import type { NestExpressApplication } from '@nestjs/platform-express';
import cookieParser from 'cookie-parser';
import graphqlUploadExpress from 'graphql-upload/graphqlUploadExpress.mjs';
import { SocketIoAdapter } from './fundamentals';
import { SocketIoAdapterImpl } from './fundamentals/websocket';
import { ExceptionLogger } from './middleware/exception-logger';
import { GlobalExceptionFilter } from './fundamentals';
import { SocketIoAdapter, SocketIoAdapterImpl } from './fundamentals/websocket';
import { serverTimingAndCache } from './middleware/timing';
export async function createApp() {
@@ -29,7 +28,7 @@ export async function createApp() {
})
);
app.useGlobalFilters(new ExceptionLogger());
app.useGlobalFilters(new GlobalExceptionFilter(app.getHttpAdapter()));
app.use(cookieParser());
if (AFFiNE.flavor.sync) {

View File

@@ -3,8 +3,7 @@ AFFiNE.ENV_MAP = {
AFFINE_SERVER_PORT: ['port', 'int'],
AFFINE_SERVER_HOST: 'host',
AFFINE_SERVER_SUB_PATH: 'path',
AFFIHE_SERVER_HTTPS: ['https', 'boolean'],
AFFINE_ENV: 'affineEnv',
AFFINE_SERVER_HTTPS: ['https', 'boolean'],
DATABASE_URL: 'db.url',
ENABLE_CAPTCHA: ['auth.captcha.enable', 'boolean'],
CAPTCHA_TURNSTILE_SECRET: ['auth.captcha.turnstile.secret', 'string'],
@@ -14,11 +13,12 @@ AFFiNE.ENV_MAP = {
OAUTH_GITHUB_ENABLED: ['auth.oauthProviders.github.enabled', 'boolean'],
OAUTH_GITHUB_CLIENT_ID: 'auth.oauthProviders.github.clientId',
OAUTH_GITHUB_CLIENT_SECRET: 'auth.oauthProviders.github.clientSecret',
OAUTH_EMAIL_LOGIN: 'auth.email.login',
OAUTH_EMAIL_SENDER: 'auth.email.sender',
OAUTH_EMAIL_SERVER: 'auth.email.server',
OAUTH_EMAIL_PORT: ['auth.email.port', 'int'],
OAUTH_EMAIL_PASSWORD: 'auth.email.password',
MAILER_HOST: 'mailer.host',
MAILER_PORT: ['mailer.port', 'int'],
MAILER_USER: 'mailer.auth.user',
MAILER_PASSWORD: 'mailer.auth.pass',
MAILER_SENDER: 'mailer.from.address',
MAILER_SECURE: ['mailer.secure', 'boolean'],
THROTTLE_TTL: ['rateLimiter.ttl', 'int'],
THROTTLE_LIMIT: ['rateLimiter.limit', 'int'],
REDIS_SERVER_HOST: 'plugins.redis.host',
@@ -28,13 +28,14 @@ AFFiNE.ENV_MAP = {
REDIS_SERVER_DATABASE: ['plugins.redis.db', 'int'],
DOC_MERGE_INTERVAL: ['doc.manager.updatePollInterval', 'int'],
DOC_MERGE_USE_JWST_CODEC: [
'doc.manager.experimentalMergeWithJwstCodec',
'doc.manager.experimentalMergeWithYOcto',
'boolean',
],
ENABLE_LOCAL_EMAIL: ['auth.localEmail', 'boolean'],
STRIPE_API_KEY: 'plugins.payment.stripe.keys.APIKey',
STRIPE_WEBHOOK_KEY: 'plugins.payment.stripe.keys.webhookKey',
FEATURES_EARLY_ACCESS_PREVIEW: ['featureFlags.earlyAccessPreview', 'boolean'],
FEATURES_SYNC_CLIENT_VERSION_CHECK: [
'featureFlags.syncClientVersionCheck',
'boolean',
],
};
export default AFFiNE;

View File

@@ -0,0 +1,54 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion */
// Custom configurations for AFFiNE Cloud
// ====================================================================================
// Q: WHY THIS FILE EXISTS?
// A: AFFiNE deployment environment may have a lot of custom environment variables,
// which are not suitable to be put in the `affine.ts` file.
// For example, AFFiNE Cloud Clusters are deployed on Google Cloud Platform.
// We need to enable the `gcloud` plugin to make sure the nodes working well,
// but the default selfhost version may not require it.
// So it's not a good idea to put such logic in the common `affine.ts` file.
//
// ```
// if (AFFiNE.deploy) {
// AFFiNE.plugins.use('gcloud');
// }
// ```
// ====================================================================================
const env = process.env;
AFFiNE.metrics.enabled = !AFFiNE.node.test;
if (env.R2_OBJECT_STORAGE_ACCOUNT_ID) {
AFFiNE.plugins.use('cloudflare-r2', {
accountId: env.R2_OBJECT_STORAGE_ACCOUNT_ID,
credentials: {
accessKeyId: env.R2_OBJECT_STORAGE_ACCESS_KEY_ID!,
secretAccessKey: env.R2_OBJECT_STORAGE_SECRET_ACCESS_KEY!,
},
});
AFFiNE.storage.storages.avatar.provider = 'cloudflare-r2';
AFFiNE.storage.storages.avatar.bucket = 'account-avatar';
AFFiNE.storage.storages.avatar.publicLinkFactory = key =>
`https://avatar.affineassets.com/${key}`;
AFFiNE.storage.storages.blob.provider = 'cloudflare-r2';
AFFiNE.storage.storages.blob.bucket = `workspace-blobs-${
AFFiNE.affine.canary ? 'canary' : 'prod'
}`;
}
AFFiNE.plugins.use('redis');
AFFiNE.plugins.use('payment');
if (AFFiNE.deploy) {
AFFiNE.mailer = {
service: 'gmail',
auth: {
user: env.MAILER_USER,
pass: env.MAILER_PASSWORD,
},
};
AFFiNE.plugins.use('gcloud');
}

View File

@@ -1,39 +1,117 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion */
// Custom configurations
const env = process.env;
// TODO(@forehalo): detail explained
// Storage
if (env.R2_OBJECT_STORAGE_ACCOUNT_ID) {
AFFiNE.storage.providers.r2 = {
accountId: env.R2_OBJECT_STORAGE_ACCOUNT_ID,
credentials: {
accessKeyId: env.R2_OBJECT_STORAGE_ACCESS_KEY_ID!,
secretAccessKey: env.R2_OBJECT_STORAGE_SECRET_ACCESS_KEY!,
},
};
AFFiNE.storage.storages.avatar.provider = 'r2';
AFFiNE.storage.storages.avatar.bucket = 'account-avatar';
AFFiNE.storage.storages.avatar.publicLinkFactory = key =>
`https://avatar.affineassets.com/${key}`;
AFFiNE.storage.storages.blob.provider = 'r2';
AFFiNE.storage.storages.blob.bucket = `workspace-blobs-${
AFFiNE.affine.canary ? 'canary' : 'prod'
}`;
}
// Metrics
AFFiNE.metrics.enabled = true;
// Plugins Section Start
AFFiNE.plugins.use('payment', {
stripe: {
keys: {},
apiVersion: '2023-10-16',
},
//
// ###############################################################
// ## AFFiNE Configuration System ##
// ###############################################################
// Here is the file of all AFFiNE configurations that will affect runtime behavior.
// Override any configuration here and it will be merged when starting the server.
// Any changes in this file won't take effect before server restarted.
//
//
// > Configurations merge order
// 1. load environment variables (`.env` if provided, and from system)
// 2. load `src/fundamentals/config/default.ts` for all default settings
// 3. apply `./affine.ts` patches (this file)
// 4. apply `./affine.env.ts` patches
//
//
// ###############################################################
// ## General settings ##
// ###############################################################
//
// /* The unique identity of the server */
// AFFiNE.serverId = 'some-randome-uuid';
//
// /* The name of AFFiNE Server, may show on the UI */
// AFFiNE.serverName = 'Your Cool AFFiNE Selfhosted Cloud';
//
// /* Whether the server is deployed behind a HTTPS proxied environment */
AFFiNE.https = false;
// /* Domain of your server that your server will be available at */
AFFiNE.host = 'localhost';
// /* The local port of your server that will listen on */
AFFiNE.port = 3010;
// /* The sub path of your server */
// /* For example, if you set `AFFiNE.path = '/affine'`, then the server will be available at `${domain}/affine` */
// AFFiNE.path = '/affine';
//
//
// ###############################################################
// ## Database settings ##
// ###############################################################
//
// /* The URL of the database where most of AFFiNE server data will be stored in */
// AFFiNE.db.url = 'postgres://user:passsword@localhost:5432/affine';
//
//
// ###############################################################
// ## Server Function settings ##
// ###############################################################
//
// /* Whether enable metrics and tracing while running the server */
// /* The metrics will be available at `http://localhost:9464/metrics` with [Prometheus] format exported */
// AFFiNE.metrics.enabled = true;
//
// /* GraphQL configurations that control the behavior of the Apollo Server behind */
// /* @see https://www.apollographql.com/docs/apollo-server/api/apollo-server */
// AFFiNE.graphql = {
// /* Path to mount GraphQL API */
// path: '/graphql',
// buildSchemaOptions: {
// numberScalarMode: 'integer',
// },
// /* Whether allow client to query the schema introspection */
// introspection: true,
// /* Whether enable GraphQL Playground UI */
// playground: true,
// }
//
// /* Doc Store & Collaberation */
// /* How long the buffer time of creating a new history snapshot when doc get updated */
// AFFiNE.doc.history.interval = 1000 * 60 * 10; // 10 minutes
//
// /* Use `y-octo` to merge updates at the same time when merging using Yjs */
// AFFiNE.doc.manager.experimentalMergeWithYOcto = true;
//
// /* How often the manager will start a new turn of merging pending updates into doc snapshot */
// AFFiNE.doc.manager.updatePollInterval = 1000 * 3;
//
//
// ###############################################################
// ## Plugins settings ##
// ###############################################################
//
// /* Redis Plugin */
// /* Provide caching and session storing backed by Redis. */
// /* Useful when you deploy AFFiNE server in a cluster. */
AFFiNE.plugins.use('redis', {
/* override options */
});
AFFiNE.plugins.use('redis');
// Plugins Section end
export default AFFiNE;
//
//
// /* Payment Plugin */
AFFiNE.plugins.use('payment', {
stripe: { keys: {}, apiVersion: '2023-10-16' },
});
//
//
// /* Cloudflare R2 Plugin */
// /* Enable if you choose to store workspace blobs or user avatars in Cloudflare R2 Storage Service */
// AFFiNE.plugins.use('cloudflare-r2', {
// accountId: '',
// credentials: {
// accessKeyId: '',
// secretAccessKey: '',
// },
// });
//
// /* AWS S3 Plugin */
// /* Enable if you choose to store workspace blobs or user avatars in AWS S3 Storage Service */
// AFFiNE.plugins.use('aws-s3', {
// credentials: {
// accessKeyId: '',
// secretAccessKey: '',
// })
// /* Update the provider of storages */
// AFFiNE.storage.storages.blob.provider = 'r2';
// AFFiNE.storage.storages.avatar.provider = 'r2';

View File

@@ -4,16 +4,15 @@ import {
Inject,
Injectable,
SetMetadata,
UnauthorizedException,
UseGuards,
} from '@nestjs/common';
import { Reflector } from '@nestjs/core';
import { PrismaClient } from '@prisma/client';
import type { NextAuthOptions } from 'next-auth';
import { AuthHandler } from 'next-auth/core';
import {
getRequestResponseFromContext,
PrismaService,
} from '../../fundamentals';
import { getRequestResponseFromContext } from '../../fundamentals';
import { NextAuthOptionsProvide } from './next-auth-options';
import { AuthService } from './service';
@@ -56,7 +55,7 @@ class AuthGuard implements CanActivate {
@Inject(NextAuthOptionsProvide)
private readonly nextAuthOptions: NextAuthOptions,
private readonly auth: AuthService,
private readonly prisma: PrismaService,
private readonly prisma: PrismaClient,
private readonly reflector: Reflector
) {}
@@ -69,6 +68,10 @@ class AuthGuard implements CanActivate {
'isPublic',
context.getHandler()
);
// FIXME(@forehalo): @Publicable() is duplicated with @CurrentUser() user?: User
// ^ optional
// we can prefetch user session in each request even before this `Guard`
// api can be public, but if user is logged in, we can get user info
const isPublicable = this.reflector.get<boolean>(
'isPublicable',
@@ -94,7 +97,7 @@ class AuthGuard implements CanActivate {
const { body = {}, cookies, status = 200 } = session;
if (!body && !isPublicable) {
return false;
throw new UnauthorizedException('You are not signed in.');
}
// @ts-expect-error body is user here

View File

@@ -1,6 +1,7 @@
import { PrismaAdapter } from '@auth/prisma-adapter';
import { FactoryProvider, Logger } from '@nestjs/common';
import { verify } from '@node-rs/argon2';
import { PrismaClient } from '@prisma/client';
import { assign, omit } from 'lodash-es';
import { NextAuthOptions } from 'next-auth';
import Credentials from 'next-auth/providers/credentials';
@@ -8,12 +9,7 @@ import Email from 'next-auth/providers/email';
import Github from 'next-auth/providers/github';
import Google from 'next-auth/providers/google';
import {
Config,
MailService,
PrismaService,
SessionService,
} from '../../fundamentals';
import { Config, MailService, SessionService } from '../../fundamentals';
import { FeatureType } from '../features';
import { Quota_FreePlanV1_1 } from '../quota';
import {
@@ -31,7 +27,7 @@ export const NextAuthOptionsProvider: FactoryProvider<NextAuthOptions> = {
provide: NextAuthOptionsProvide,
useFactory(
config: Config,
prisma: PrismaService,
prisma: PrismaClient,
mailer: MailService,
session: SessionService
) {
@@ -64,6 +60,7 @@ export const NextAuthOptionsProvider: FactoryProvider<NextAuthOptions> = {
if (data.image) {
userData.avatarUrl = data.image;
}
// @ts-expect-error third part library type mismatch
return createUser(userData);
};
// linkAccount exists in the adapter
@@ -96,28 +93,29 @@ export const NextAuthOptionsProvider: FactoryProvider<NextAuthOptions> = {
}
return result;
};
prismaAdapter.createVerificationToken = async data => {
await session.set(
`${data.identifier}:${data.token}`,
Date.now() + session.sessionTtl
);
return data;
};
prismaAdapter.useVerificationToken = async ({ identifier, token }) => {
const expires = await session.get(`${identifier}:${token}`);
if (expires) {
return { identifier, token, expires: new Date(expires) };
} else {
return null;
}
};
const nextAuthOptions: NextAuthOptions = {
providers: [
// @ts-expect-error esm interop issue
Email.default({
server: {
host: config.auth.email.server,
port: config.auth.email.port,
auth: {
user: config.auth.email.login,
pass: config.auth.email.password,
},
},
from: config.auth.email.sender,
sendVerificationRequest: (params: SendVerificationRequestParams) =>
sendVerificationRequest(config, logger, mailer, session, params),
}),
],
providers: [],
// @ts-expect-error Third part library type mismatch
adapter: prismaAdapter,
debug: !config.node.prod,
session: {
strategy: 'database',
},
logger: {
debug(code, metadata) {
logger.debug(`${code}: ${JSON.stringify(metadata)}`);
@@ -170,6 +168,16 @@ export const NextAuthOptionsProvider: FactoryProvider<NextAuthOptions> = {
})
);
if (config.mailer && mailer) {
nextAuthOptions.providers.push(
// @ts-expect-error esm interop issue
Email.default({
sendVerificationRequest: (params: SendVerificationRequestParams) =>
sendVerificationRequest(config, logger, mailer, session, params),
})
);
}
if (config.auth.oauthProviders.github) {
nextAuthOptions.providers.push(
// @ts-expect-error esm interop issue
@@ -196,6 +204,11 @@ export const NextAuthOptionsProvider: FactoryProvider<NextAuthOptions> = {
);
}
if (nextAuthOptions.providers.length > 1) {
// not only credentials provider
nextAuthOptions.session = { strategy: 'database' };
}
nextAuthOptions.jwt = {
encode: async ({ token, maxAge }) =>
encode(config, prisma, token, maxAge),
@@ -244,7 +257,10 @@ export const NextAuthOptionsProvider: FactoryProvider<NextAuthOptions> = {
.count({
where: {
user: {
email,
email: {
equals: email,
mode: 'insensitive',
},
},
feature: {
feature: FeatureType.EarlyAccess,
@@ -266,5 +282,5 @@ export const NextAuthOptionsProvider: FactoryProvider<NextAuthOptions> = {
};
return nextAuthOptions;
},
inject: [Config, PrismaService, MailService, SessionService],
inject: [Config, PrismaClient, MailService, SessionService],
};

View File

@@ -15,7 +15,7 @@ import {
UseGuards,
} from '@nestjs/common';
import { hash, verify } from '@node-rs/argon2';
import type { User } from '@prisma/client';
import { PrismaClient, type User } from '@prisma/client';
import type { NextFunction, Request, Response } from 'express';
import { pick } from 'lodash-es';
import { nanoid } from 'nanoid';
@@ -26,7 +26,6 @@ import {
AuthThrottlerGuard,
Config,
metrics,
PrismaService,
SessionService,
Throttle,
} from '../../fundamentals';
@@ -45,7 +44,7 @@ export class NextAuthController {
constructor(
readonly config: Config,
readonly prisma: PrismaService,
readonly prisma: PrismaClient,
private readonly authService: AuthService,
@Inject(NextAuthOptionsProvide)
private readonly nextAuthOptions: NextAuthOptions,
@@ -107,7 +106,10 @@ export class NextAuthController {
if (email) {
const user = await this.prisma.user.findFirst({
where: {
email,
email: {
equals: email,
mode: 'insensitive',
},
},
});
if (!user) {

View File

@@ -8,13 +8,12 @@ import {
} from '@nestjs/common';
import { hash, verify } from '@node-rs/argon2';
import { Algorithm, sign, verify as jwtVerify } from '@node-rs/jsonwebtoken';
import type { User } from '@prisma/client';
import { PrismaClient, type User } from '@prisma/client';
import { nanoid } from 'nanoid';
import {
Config,
MailService,
PrismaService,
verifyChallengeResponse,
} from '../../fundamentals';
import { Quota_FreePlanV1_1 } from '../quota';
@@ -32,7 +31,7 @@ export const getUtcTimestamp = () => Math.floor(Date.now() / 1000);
export class AuthService {
constructor(
private readonly config: Config,
private readonly prisma: PrismaService,
private readonly prisma: PrismaClient,
private readonly mailer: MailService
) {}
@@ -136,7 +135,7 @@ export class AuthService {
return (
!!outcome.success &&
// skip hostname check in dev mode
(this.config.affineEnv === 'dev' || outcome.hostname === this.config.host)
(this.config.node.dev || outcome.hostname === this.config.host)
);
}
@@ -151,7 +150,10 @@ export class AuthService {
async signIn(email: string, password: string): Promise<User> {
const user = await this.prisma.user.findFirst({
where: {
email,
email: {
equals: email,
mode: 'insensitive',
},
},
});
@@ -179,7 +181,10 @@ export class AuthService {
async signUp(name: string, email: string, password: string): Promise<User> {
const user = await this.prisma.user.findFirst({
where: {
email,
email: {
equals: email,
mode: 'insensitive',
},
},
});
@@ -213,7 +218,10 @@ export class AuthService {
async createAnonymousUser(email: string): Promise<User> {
const user = await this.prisma.user.findFirst({
where: {
email,
email: {
equals: email,
mode: 'insensitive',
},
},
});
@@ -241,9 +249,12 @@ export class AuthService {
}
async getUserByEmail(email: string): Promise<User | null> {
return this.prisma.user.findUnique({
return this.prisma.user.findFirst({
where: {
email,
email: {
equals: email,
mode: 'insensitive',
},
},
});
}
@@ -251,7 +262,10 @@ export class AuthService {
async isUserHasPassword(email: string): Promise<boolean> {
const user = await this.prisma.user.findFirst({
where: {
email,
email: {
equals: email,
mode: 'insensitive',
},
},
});
if (!user) {
@@ -261,9 +275,12 @@ export class AuthService {
}
async changePassword(email: string, newPassword: string): Promise<User> {
const user = await this.prisma.user.findUnique({
const user = await this.prisma.user.findFirst({
where: {
email,
email: {
equals: email,
mode: 'insensitive',
},
emailVerified: {
not: null,
},

View File

@@ -2,14 +2,15 @@ import { randomUUID } from 'node:crypto';
import { BadRequestException } from '@nestjs/common';
import { Algorithm, sign, verify as jwtVerify } from '@node-rs/jsonwebtoken';
import { PrismaClient } from '@prisma/client';
import { JWT } from 'next-auth/jwt';
import { Config, PrismaService } from '../../../fundamentals';
import { Config } from '../../../fundamentals';
import { getUtcTimestamp, UserClaim } from '../service';
export const jwtEncode = async (
config: Config,
prisma: PrismaService,
prisma: PrismaClient,
token: JWT | undefined,
maxAge: number | undefined
) => {

View File

@@ -11,7 +11,7 @@ export async function sendVerificationRequest(
session: SessionService,
params: SendVerificationRequestParams
) {
const { identifier, url, provider } = params;
const { identifier, url } = params;
const urlWithToken = new URL(url);
const callbackUrl = urlWithToken.searchParams.get('callbackUrl') || '';
if (!callbackUrl) {
@@ -28,7 +28,6 @@ export async function sendVerificationRequest(
const result = await mailer.sendSignInEmail(urlWithToken.toString(), {
to: identifier,
from: provider.from,
});
logger.log(`send verification email success: ${result.accepted.join(', ')}`);

View File

@@ -1,6 +1,8 @@
import { Module } from '@nestjs/common';
import { Field, ObjectType, Query, registerEnumType } from '@nestjs/graphql';
import { DeploymentType } from '../fundamentals';
export enum ServerFeature {
Payment = 'payment',
}
@@ -9,6 +11,10 @@ registerEnumType(ServerFeature, {
name: 'ServerFeature',
});
registerEnumType(DeploymentType, {
name: 'ServerDeploymentType',
});
const ENABLED_FEATURES: ServerFeature[] = [];
export function ADD_ENABLED_FEATURES(feature: ServerFeature) {
ENABLED_FEATURES.push(feature);
@@ -28,6 +34,9 @@ export class ServerConfigType {
@Field({ description: 'server base url' })
baseUrl!: string;
@Field(() => DeploymentType, { description: 'server type' })
type!: DeploymentType;
/**
* @deprecated
*/
@@ -37,6 +46,7 @@ export class ServerConfigType {
@Field(() => [ServerFeature], { description: 'enabled server features' })
features!: ServerFeature[];
}
export class ServerConfigResolver {
@Query(() => ServerConfigType, {
description: 'server config',
@@ -46,7 +56,11 @@ export class ServerConfigResolver {
name: AFFiNE.serverName,
version: AFFiNE.version,
baseUrl: AFFiNE.baseUrl,
flavor: AFFiNE.flavor.type,
type: AFFiNE.type,
// BACKWARD COMPATIBILITY
// the old flavors contains `selfhosted` but it actually not flavor but deployment type
// this field should be removed after frontend feature flags implemented
flavor: AFFiNE.type,
features: ENABLED_FEATURES,
};
}

View File

@@ -2,13 +2,13 @@ import { isDeepStrictEqual } from 'node:util';
import { Injectable, Logger } from '@nestjs/common';
import { Cron, CronExpression } from '@nestjs/schedule';
import { PrismaClient } from '@prisma/client';
import {
Config,
type EventPayload,
metrics,
OnEvent,
PrismaService,
} from '../../fundamentals';
import { QuotaService } from '../quota';
import { Permission } from '../workspaces/types';
@@ -19,7 +19,7 @@ export class DocHistoryManager {
private readonly logger = new Logger(DocHistoryManager.name);
constructor(
private readonly config: Config,
private readonly db: PrismaService,
private readonly db: PrismaClient,
private readonly quota: QuotaService
) {}

View File

@@ -5,12 +5,11 @@ import {
OnModuleInit,
} from '@nestjs/common';
import { Cron, CronExpression } from '@nestjs/schedule';
import { Snapshot, Update } from '@prisma/client';
import { PrismaClient, Snapshot, Update } from '@prisma/client';
import { chunk } from 'lodash-es';
import { defer, retry } from 'rxjs';
import {
applyUpdate,
decodeStateVector,
Doc,
encodeStateAsUpdate,
encodeStateVector,
@@ -19,13 +18,13 @@ import {
import {
Cache,
CallTimer,
Config,
EventEmitter,
type EventPayload,
mergeUpdatesInApplyWay as jwstMergeUpdates,
metrics,
OnEvent,
PrismaService,
} from '../../fundamentals';
function compare(yBinary: Buffer, jwstBinary: Buffer, strict = false): boolean {
@@ -45,36 +44,6 @@ function compare(yBinary: Buffer, jwstBinary: Buffer, strict = false): boolean {
return compare(yBinary, yBinary2, true);
}
/**
* Detect whether rhs state is newer than lhs state.
*
* How could we tell a state is newer:
*
* i. if the state vector size is larger, it's newer
* ii. if the state vector size is same, compare each client's state
*/
function isStateNewer(lhs: Buffer, rhs: Buffer): boolean {
const lhsVector = decodeStateVector(lhs);
const rhsVector = decodeStateVector(rhs);
if (lhsVector.size < rhsVector.size) {
return true;
}
for (const [client, state] of lhsVector) {
const rstate = rhsVector.get(client);
if (!rstate) {
return false;
}
if (state < rstate) {
return true;
}
}
return false;
}
export function isEmptyBuffer(buf: Buffer): boolean {
return (
buf.length === 0 ||
@@ -102,7 +71,7 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
private busy = false;
constructor(
private readonly db: PrismaService,
private readonly db: PrismaClient,
private readonly config: Config,
private readonly cache: Cache,
private readonly event: EventEmitter
@@ -119,6 +88,7 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
this.destroy();
}
@CallTimer('doc', 'yjs_recover_updates_to_doc')
private recoverDoc(...updates: Buffer[]): Promise<Doc> {
const doc = new Doc();
const chunks = chunk(updates, 10);
@@ -154,11 +124,7 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
const doc = await this.recoverDoc(...updates);
// test jwst codec
if (
this.config.affine.canary &&
this.config.doc.manager.experimentalMergeWithJwstCodec &&
updates.length < 100 /* avoid overloading */
) {
if (this.config.doc.manager.experimentalMergeWithYOcto) {
metrics.jwst.counter('codec_merge_counter').add(1);
const yjsResult = Buffer.from(encodeStateAsUpdate(doc));
let log = false;
@@ -209,7 +175,7 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
}, this.config.doc.manager.updatePollInterval);
this.logger.log('Automation started');
if (this.config.doc.manager.experimentalMergeWithJwstCodec) {
if (this.config.doc.manager.experimentalMergeWithYOcto) {
this.logger.warn(
'Experimental feature enabled: merge updates with jwst codec is enabled'
);
@@ -382,7 +348,7 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
const updates = await this.getUpdates(workspaceId, guid);
if (updates.length) {
const doc = await this.squash(updates, snapshot);
const doc = await this.squash(snapshot, updates);
return Buffer.from(encodeStateVector(doc));
}
@@ -415,7 +381,7 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
// take it ease, we don't want to overload db and or cpu
// if we limit the taken number here,
// user will never see the latest doc if there are too many updates pending to be merged.
take: 100,
take: this.config.doc.manager.maxUpdatesPullCount,
});
// perf(memory): avoid sorting in db
@@ -463,80 +429,92 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
});
}
/**
* @returns whether the snapshot is updated to the latest, `undefined` means the doc to be upserted is outdated.
*/
@CallTimer('doc', 'upsert')
private async upsert(
workspaceId: string,
guid: string,
doc: Doc,
// we always delay the snapshot update to avoid db overload,
// so the value of `updatedAt` will not be accurate to user's real action time
// so the value of auto updated `updatedAt` by db will never be accurate to user's real action time
updatedAt: Date,
initialSeq?: number
seq: number
) {
return this.lockSnapshotForUpsert(workspaceId, guid, async () => {
const blob = Buffer.from(encodeStateAsUpdate(doc));
const blob = Buffer.from(encodeStateAsUpdate(doc));
if (isEmptyBuffer(blob)) {
return false;
if (isEmptyBuffer(blob)) {
return undefined;
}
const state = Buffer.from(encodeStateVector(doc));
// CONCERNS:
// i. Because we save the real user's last seen action time as `updatedAt`,
// it's possible to simply compare the `updatedAt` to determine if the snapshot is older than the one we are going to save.
//
// ii. Prisma doesn't support `upsert` with additional `where` condition along side unique constraint.
// In our case, we need to manually check the `updatedAt` to avoid overriding the newer snapshot.
// where: { id_workspaceId: {}, updatedAt: { lt: updatedAt } }
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// iii. Only set the seq number when creating the snapshot.
// For updating scenario, the seq number will be updated when updates pushed to db.
try {
const result: { updatedAt: Date }[] = await this.db.$queryRaw`
INSERT INTO "snapshots" ("workspace_id", "guid", "blob", "state", "seq", "created_at", "updated_at")
VALUES (${workspaceId}, ${guid}, ${blob}, ${state}, ${seq}, DEFAULT, ${updatedAt})
ON CONFLICT ("workspace_id", "guid")
DO UPDATE SET "blob" = ${blob}, "state" = ${state}, "updated_at" = ${updatedAt}, "seq" = ${seq}
WHERE "snapshots"."workspace_id" = ${workspaceId} AND "snapshots"."guid" = ${guid} AND "snapshots"."updated_at" <= ${updatedAt}
RETURNING "snapshots"."workspace_id" as "workspaceId", "snapshots"."guid" as "id", "snapshots"."updated_at" as "updatedAt"
`;
// const result = await this.db.snapshot.upsert({
// select: {
// updatedAt: true,
// seq: true,
// },
// where: {
// id_workspaceId: {
// workspaceId,
// id: guid,
// },
// ⬇️ NOT SUPPORTED BY PRISMA YET
// updatedAt: {
// lt: updatedAt,
// },
// },
// update: {
// blob,
// state,
// updatedAt,
// },
// create: {
// workspaceId,
// id: guid,
// blob,
// state,
// updatedAt,
// seq,
// },
// });
// if the condition `snapshot.updatedAt > updatedAt` is true, by which means the snapshot has already been updated by other process,
// the updates has been applied to current `doc` must have been seen by the other process as well.
// The `updatedSnapshot` will be `undefined` in this case.
const updatedSnapshot = result.at(0);
if (!updatedSnapshot) {
return undefined;
}
const state = Buffer.from(encodeStateVector(doc));
return await this.db.$transaction(async db => {
const snapshot = await db.snapshot.findUnique({
where: {
id_workspaceId: {
id: guid,
workspaceId,
},
},
});
// update
if (snapshot) {
// only update if state is newer
if (isStateNewer(snapshot.state ?? Buffer.from([0]), state)) {
await db.snapshot.update({
select: {
seq: true,
},
where: {
id_workspaceId: {
workspaceId,
id: guid,
},
},
data: {
blob,
state,
updatedAt,
},
});
return true;
} else {
return false;
}
} else {
// create
await db.snapshot.create({
select: {
seq: true,
},
data: {
id: guid,
workspaceId,
blob,
state,
seq: initialSeq,
createdAt: updatedAt,
updatedAt,
},
});
return true;
}
});
});
return true;
} catch (e) {
this.logger.error('Failed to upsert snapshot', e);
return false;
}
}
private async _get(
@@ -548,7 +526,7 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
if (updates.length) {
return {
doc: await this.squash(updates, snapshot),
doc: await this.squash(snapshot, updates),
};
}
@@ -559,17 +537,17 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
* Squash updates into a single update and save it as snapshot,
* and delete the updates records at the same time.
*/
private async squash(updates: Update[], snapshot: Snapshot | null) {
@CallTimer('doc', 'squash')
private async squash(snapshot: Snapshot | null, updates: Update[]) {
if (!updates.length) {
throw new Error('No updates to squash');
}
const first = updates[0];
const last = updates[updates.length - 1];
const { id, workspaceId } = first;
const last = updates[updates.length - 1];
const { id, workspaceId } = last;
const doc = await this.applyUpdates(
first.id,
id,
snapshot ? snapshot.blob : Buffer.from([0, 0]),
...updates.map(u => u.blob)
);
@@ -600,19 +578,24 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
);
}
// always delete updates
// the upsert will return false if the state is not newer, so we don't need to worry about it
const { count } = await this.db.update.deleteMany({
where: {
id,
workspaceId,
seq: {
in: updates.map(u => u.seq),
// we will keep the updates only if the upsert failed on unknown reason
// `done === undefined` means the updates is outdated(have already been merged by other process), safe to be deleted
// `done === true` means the upsert is successful, safe to be deleted
if (done !== false) {
// always delete updates
// the upsert will return false if the state is not newer, so we don't need to worry about it
const { count } = await this.db.update.deleteMany({
where: {
id,
workspaceId,
seq: {
in: updates.map(u => u.seq),
},
},
},
});
});
await this.updateCachedUpdatesCount(workspaceId, id, -count);
await this.updateCachedUpdatesCount(workspaceId, id, -count);
}
return doc;
}
@@ -761,18 +744,6 @@ export class DocManager implements OnModuleInit, OnModuleDestroy {
);
}
async lockSnapshotForUpsert<T>(
workspaceId: string,
guid: string,
job: () => Promise<T>
) {
return this.doWithLock(
'doc:manager:snapshot',
`${workspaceId}::${guid}`,
job
);
}
@Cron(CronExpression.EVERY_MINUTE)
async reportUpdatesQueueCount() {
metrics.doc

View File

@@ -1,6 +1,7 @@
import { Injectable, Logger } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
import { Config, PrismaService } from '../../fundamentals';
import { Config } from '../../fundamentals';
import { FeatureService } from './service';
import { FeatureType } from './types';
@@ -12,7 +13,7 @@ export class FeatureManagementService {
constructor(
private readonly feature: FeatureService,
private readonly prisma: PrismaService,
private readonly prisma: PrismaClient,
private readonly config: Config
) {}
@@ -50,7 +51,10 @@ export class FeatureManagementService {
async isEarlyAccessUser(email: string) {
const user = await this.prisma.user.findFirst({
where: {
email,
email: {
equals: email,
mode: 'insensitive',
},
},
});
if (user) {

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
import { PrismaService } from '../../fundamentals';
import { UserType } from '../users/types';
import { WorkspaceType } from '../workspaces/types';
import { FeatureConfigType, getFeature } from './feature';
@@ -8,7 +8,7 @@ import { FeatureKind, FeatureType } from './types';
@Injectable()
export class FeatureService {
constructor(private readonly prisma: PrismaService) {}
constructor(private readonly prisma: PrismaClient) {}
async getFeaturesVersion() {
const features = await this.prisma.features.findMany({

View File

@@ -1,4 +1,5 @@
import { PrismaService } from '../../fundamentals';
import { PrismaClient } from '@prisma/client';
import { formatDate, formatSize, Quota, QuotaSchema } from './types';
const QuotaCache = new Map<number, QuotaConfig>();
@@ -6,7 +7,7 @@ const QuotaCache = new Map<number, QuotaConfig>();
export class QuotaConfig {
readonly config: Quota;
static async get(prisma: PrismaService, featureId: number) {
static async get(prisma: PrismaClient, featureId: number) {
const cachedQuota = QuotaCache.get(featureId);
if (cachedQuota) {

View File

@@ -1,15 +1,16 @@
import { Injectable } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
import { type EventPayload, OnEvent, PrismaService } from '../../fundamentals';
import { type EventPayload, OnEvent } from '../../fundamentals';
import { FeatureKind } from '../features';
import { QuotaConfig } from './quota';
import { QuotaType } from './types';
type Transaction = Parameters<Parameters<PrismaService['$transaction']>[0]>[0];
type Transaction = Parameters<Parameters<PrismaClient['$transaction']>[0]>[0];
@Injectable()
export class QuotaService {
constructor(private readonly prisma: PrismaService) {}
constructor(private readonly prisma: PrismaClient) {}
// get activated user quota
async getUserQuota(userId: string) {

View File

@@ -1,4 +1,4 @@
import { Injectable, NotFoundException } from '@nestjs/common';
import { Injectable, Logger, NotFoundException } from '@nestjs/common';
import { FeatureService, FeatureType } from '../features';
import { WorkspaceBlobStorage } from '../storage';
@@ -11,6 +11,8 @@ type QuotaBusinessType = QuotaQueryType & { businessBlobLimit: number };
@Injectable()
export class QuotaManagementService {
protected logger = new Logger(QuotaManagementService.name);
constructor(
private readonly feature: FeatureService,
private readonly quota: QuotaService,
@@ -38,11 +40,22 @@ export class QuotaManagementService {
async getUserUsage(userId: string) {
const workspaces = await this.permissions.getOwnedWorkspaces(userId);
const sizes = await Promise.all(
const sizes = await Promise.allSettled(
workspaces.map(workspace => this.storage.totalSize(workspace))
);
return sizes.reduce((total, size) => total + size, 0);
return sizes.reduce((total, size) => {
if (size.status === 'fulfilled') {
if (Number.isSafeInteger(size.value)) {
return total + size.value;
} else {
this.logger.error(`Workspace size is invalid: ${size.value}`);
}
} else {
this.logger.error(`Failed to get workspace size: ${size.reason}`);
}
return total;
}, 0);
}
// get workspace's owner quota and total size of used

View File

@@ -6,15 +6,18 @@ import type {
PutObjectMetadata,
StorageProvider,
} from '../../../fundamentals';
import { Config, createStorageProvider, OnEvent } from '../../../fundamentals';
import { Config, OnEvent, StorageProviderFactory } from '../../../fundamentals';
@Injectable()
export class AvatarStorage {
public readonly provider: StorageProvider;
private readonly storageConfig: Config['storage']['storages']['avatar'];
constructor(private readonly config: Config) {
this.provider = createStorageProvider(this.config.storage, 'avatar');
constructor(
private readonly config: Config,
private readonly storageFactory: StorageProviderFactory
) {
this.provider = this.storageFactory.create('avatar');
this.storageConfig = this.config.storage.storages.avatar;
}

View File

@@ -6,10 +6,9 @@ import type {
StorageProvider,
} from '../../../fundamentals';
import {
Config,
createStorageProvider,
EventEmitter,
OnEvent,
StorageProviderFactory,
} from '../../../fundamentals';
@Injectable()
@@ -18,9 +17,9 @@ export class WorkspaceBlobStorage {
constructor(
private readonly event: EventEmitter,
private readonly config: Config
private readonly storageFactory: StorageProviderFactory
) {
this.provider = createStorageProvider(this.config.storage, 'blob');
this.provider = this.storageFactory.create('blob');
}
async put(workspaceId: string, key: string, blob: BlobInputType) {

View File

@@ -1,4 +1,4 @@
enum EventErrorCode {
export enum EventErrorCode {
WORKSPACE_NOT_FOUND = 'WORKSPACE_NOT_FOUND',
DOC_NOT_FOUND = 'DOC_NOT_FOUND',
NOT_IN_WORKSPACE = 'NOT_IN_WORKSPACE',

View File

@@ -22,6 +22,7 @@ import {
AccessDeniedError,
DocNotFoundError,
EventError,
EventErrorCode,
InternalError,
NotInWorkspaceError,
} from './error';
@@ -112,13 +113,42 @@ export class EventsGateway implements OnGatewayConnection, OnGatewayDisconnect {
metrics.socketio.gauge('realtime_connections').record(this.connectionCount);
}
checkVersion(client: Socket, version?: string) {
if (
// @todo(@darkskygit): remove this flag after 0.12 goes stable
AFFiNE.featureFlags.syncClientVersionCheck &&
version !== AFFiNE.version
) {
client.emit('server-version-rejected', {
currentVersion: version,
requiredVersion: AFFiNE.version,
reason: `Client version${
version ? ` ${version}` : ''
} is outdated, please update to ${AFFiNE.version}`,
});
return {
error: new EventError(
EventErrorCode.VERSION_REJECTED,
`Client version ${version} is outdated, please update to ${AFFiNE.version}`
),
};
}
return null;
}
@Auth()
@SubscribeMessage('client-handshake-sync')
async handleClientHandshakeSync(
@CurrentUser() user: UserType,
@MessageBody() workspaceId: string,
@MessageBody('workspaceId') workspaceId: string,
@MessageBody('version') version: string | undefined,
@ConnectedSocket() client: Socket
): Promise<EventResponse<{ clientId: string }>> {
const versionError = this.checkVersion(client, version);
if (versionError) {
return versionError;
}
const canWrite = await this.permissions.tryCheckWorkspace(
workspaceId,
user.id,
@@ -143,9 +173,15 @@ export class EventsGateway implements OnGatewayConnection, OnGatewayDisconnect {
@SubscribeMessage('client-handshake-awareness')
async handleClientHandshakeAwareness(
@CurrentUser() user: UserType,
@MessageBody() workspaceId: string,
@MessageBody('workspaceId') workspaceId: string,
@MessageBody('version') version: string | undefined,
@ConnectedSocket() client: Socket
): Promise<EventResponse<{ clientId: string }>> {
const versionError = this.checkVersion(client, version);
if (versionError) {
return versionError;
}
const canWrite = await this.permissions.tryCheckWorkspace(
workspaceId,
user.id,
@@ -172,29 +208,17 @@ export class EventsGateway implements OnGatewayConnection, OnGatewayDisconnect {
@Auth()
@SubscribeMessage('client-handshake')
async handleClientHandShake(
@CurrentUser() user: UserType,
@MessageBody()
workspaceId: string,
@MessageBody() workspaceId: string,
@ConnectedSocket() client: Socket
): Promise<EventResponse<{ clientId: string }>> {
const canWrite = await this.permissions.tryCheckWorkspace(
workspaceId,
user.id,
Permission.Write
);
if (canWrite) {
await client.join([`${workspaceId}:sync`, `${workspaceId}:awareness`]);
return {
data: {
clientId: client.id,
},
};
} else {
return {
error: new AccessDeniedError(workspaceId),
};
const versionError = this.checkVersion(client);
if (versionError) {
return versionError;
}
// should unreachable
return {
error: new AccessDeniedError(workspaceId),
};
}
@SubscribeMessage('client-leave-sync')
@@ -227,118 +251,6 @@ export class EventsGateway implements OnGatewayConnection, OnGatewayDisconnect {
}
}
/**
* @deprecated use `client-leave-sync` and `client-leave-awareness` instead
*/
@SubscribeMessage('client-leave')
async handleClientLeave(
@MessageBody() workspaceId: string,
@ConnectedSocket() client: Socket
): Promise<EventResponse> {
if (client.rooms.has(`${workspaceId}:sync`)) {
await client.leave(`${workspaceId}:sync`);
}
if (client.rooms.has(`${workspaceId}:awareness`)) {
await client.leave(`${workspaceId}:awareness`);
}
return {};
}
/**
* This is the old version of the `client-update` event without any data protocol.
* It only exists for backwards compatibility to adapt older clients.
*
* @deprecated
*/
@SubscribeMessage('client-update')
async handleClientUpdateV1(
@MessageBody()
{
workspaceId,
guid,
update,
}: {
workspaceId: string;
guid: string;
update: string;
},
@ConnectedSocket() client: Socket
) {
if (!client.rooms.has(`${workspaceId}:sync`)) {
this.logger.verbose(
`Client ${client.id} tried to push update to workspace ${workspaceId} without joining it first`
);
return;
}
const docId = new DocID(guid, workspaceId);
client
.to(`${docId.workspace}:sync`)
.emit('server-update', { workspaceId, guid, update });
// broadcast to all clients with newer version that only listen to `server-updates`
client
.to(`${docId.workspace}:sync`)
.emit('server-updates', { workspaceId, guid, updates: [update] });
const buf = Buffer.from(update, 'base64');
await this.docManager.push(docId.workspace, docId.guid, buf);
}
/**
* This is the old version of the `doc-load` event without any data protocol.
* It only exists for backwards compatibility to adapt older clients.
*
* @deprecated
*/
@Auth()
@SubscribeMessage('doc-load')
async loadDocV1(
@ConnectedSocket() client: Socket,
@CurrentUser() user: UserType,
@MessageBody()
{
workspaceId,
guid,
stateVector,
}: {
workspaceId: string;
guid: string;
stateVector?: string;
}
): Promise<{ missing: string; state?: string } | false> {
if (!client.rooms.has(`${workspaceId}:sync`)) {
const canRead = await this.permissions.tryCheckWorkspace(
workspaceId,
user.id
);
if (!canRead) {
return false;
}
}
const docId = new DocID(guid, workspaceId);
const doc = await this.docManager.get(docId.workspace, docId.guid);
if (!doc) {
return false;
}
const missing = Buffer.from(
encodeStateAsUpdate(
doc,
stateVector ? Buffer.from(stateVector, 'base64') : undefined
)
).toString('base64');
const state = Buffer.from(encodeStateVector(doc)).toString('base64');
return {
missing,
state,
};
}
@SubscribeMessage('client-update-v2')
async handleClientUpdateV2(
@MessageBody()

View File

@@ -1,4 +1,4 @@
import { BadRequestException, HttpStatus, UseGuards } from '@nestjs/common';
import { BadRequestException, UseGuards } from '@nestjs/common';
import {
Args,
Int,
@@ -7,15 +7,14 @@ import {
ResolveField,
Resolver,
} from '@nestjs/graphql';
import type { User } from '@prisma/client';
import { GraphQLError } from 'graphql';
import { PrismaClient, type User } from '@prisma/client';
import GraphQLUpload from 'graphql-upload/GraphQLUpload.mjs';
import {
CloudThrottlerGuard,
EventEmitter,
type FileUpload,
PrismaService,
PaymentRequiredException,
Throttle,
} from '../../fundamentals';
import { Auth, CurrentUser, Public, Publicable } from '../auth/guard';
@@ -40,7 +39,7 @@ import { UsersService } from './users';
@Resolver(() => UserType)
export class UserResolver {
constructor(
private readonly prisma: PrismaService,
private readonly prisma: PrismaClient,
private readonly storage: AvatarStorage,
private readonly users: UsersService,
private readonly feature: FeatureManagementService,
@@ -97,14 +96,8 @@ export class UserResolver {
@Args('email') email?: string
) {
if (!email || !(await this.feature.canEarlyAccess(email))) {
return new GraphQLError(
`You don't have early access permission\nVisit https://community.affine.pro/c/insider-general/ for more information`,
{
extensions: {
status: HttpStatus[HttpStatus.PAYMENT_REQUIRED],
code: HttpStatus.PAYMENT_REQUIRED,
},
}
throw new PaymentRequiredException(
`You don't have early access permission\nVisit https://community.affine.pro/c/insider-general/ for more information`
);
}

View File

@@ -1,19 +1,19 @@
import { Injectable } from '@nestjs/common';
import { PrismaService } from '../../fundamentals';
import { PrismaClient } from '@prisma/client';
@Injectable()
export class UsersService {
constructor(private readonly prisma: PrismaService) {}
constructor(private readonly prisma: PrismaClient) {}
async findUserByEmail(email: string) {
return this.prisma.user
.findUnique({
where: { email },
})
.catch(() => {
return null;
});
return this.prisma.user.findFirst({
where: {
email: {
equals: email,
mode: 'insensitive',
},
},
});
}
async findUserById(id: string) {

View File

@@ -7,9 +7,10 @@ import {
Param,
Res,
} from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
import type { Response } from 'express';
import { CallTimer, PrismaService } from '../../fundamentals';
import { CallTimer } from '../../fundamentals';
import { Auth, CurrentUser, Publicable } from '../auth';
import { DocHistoryManager, DocManager } from '../doc';
import { WorkspaceBlobStorage } from '../storage';
@@ -26,7 +27,7 @@ export class WorkspacesController {
private readonly permission: PermissionService,
private readonly docManager: DocManager,
private readonly historyManager: DocHistoryManager,
private readonly prisma: PrismaService
private readonly prisma: PrismaClient
) {}
// get workspace blob
@@ -56,7 +57,7 @@ export class WorkspacesController {
this.logger.warn(`Blob ${workspaceId}/${name} has no metadata`);
}
res.setHeader('cache-control', 'public, max-age=31536000, immutable');
res.setHeader('cache-control', 'public, max-age=2592000, immutable');
body.pipe(res);
}
@@ -106,6 +107,7 @@ export class WorkspacesController {
}
res.setHeader('content-type', 'application/octet-stream');
res.setHeader('cache-control', 'no-cache');
res.send(update);
}
@@ -142,6 +144,7 @@ export class WorkspacesController {
if (history) {
res.setHeader('content-type', 'application/octet-stream');
res.setHeader('cache-control', 'public, max-age=2592000, immutable');
res.send(history.blob);
} else {
throw new NotFoundException('Doc history not found');

View File

@@ -1,7 +1,6 @@
import { ForbiddenException, Injectable } from '@nestjs/common';
import { Prisma } from '@prisma/client';
import { type Prisma, PrismaClient } from '@prisma/client';
import { PrismaService } from '../../fundamentals';
import { Permission } from './types';
export enum PublicPageMode {
@@ -11,7 +10,7 @@ export enum PublicPageMode {
@Injectable()
export class PermissionService {
constructor(private readonly prisma: PrismaService) {}
constructor(private readonly prisma: PrismaClient) {}
/// Start regin: workspace permission
async get(ws: string, user: string) {
@@ -299,6 +298,18 @@ export class PermissionService {
return this.tryCheckWorkspace(ws, user, permission);
}
async isPublicPage(ws: string, page: string) {
return this.prisma.workspacePage
.count({
where: {
workspaceId: ws,
pageId: page,
public: true,
},
})
.then(count => count > 0);
}
async publishPage(ws: string, page: string, mode = PublicPageMode.Page) {
return this.prisma.workspacePage.upsert({
where: {
@@ -321,26 +332,19 @@ export class PermissionService {
}
async revokePublicPage(ws: string, page: string) {
const workspacePage = await this.prisma.workspacePage.findUnique({
return this.prisma.workspacePage.upsert({
where: {
workspaceId_pageId: {
workspaceId: ws,
pageId: page,
},
},
});
if (!workspacePage) {
throw new Error('Page is not public');
}
return this.prisma.workspacePage.update({
where: {
workspaceId_pageId: {
workspaceId: ws,
pageId: page,
},
update: {
public: false,
},
data: {
create: {
workspaceId: ws,
pageId: page,
public: false,
},
});

View File

@@ -1,4 +1,9 @@
import { HttpStatus, Logger, UseGuards } from '@nestjs/common';
import {
ForbiddenException,
Logger,
PayloadTooLargeException,
UseGuards,
} from '@nestjs/common';
import {
Args,
Int,
@@ -8,7 +13,6 @@ import {
ResolveField,
Resolver,
} from '@nestjs/graphql';
import { GraphQLError } from 'graphql';
import { SafeIntResolver } from 'graphql-scalars';
import GraphQLUpload from 'graphql-upload/GraphQLUpload.mjs';
@@ -138,12 +142,7 @@ export class WorkspaceBlobResolver {
const checkExceeded = (recvSize: number) => {
if (!storageQuota) {
throw new GraphQLError('cannot find user quota', {
extensions: {
status: HttpStatus[HttpStatus.FORBIDDEN],
code: HttpStatus.FORBIDDEN,
},
});
throw new ForbiddenException('Cannot find user quota.');
}
const total = usedSize + recvSize;
// only skip total storage check if workspace has unlimited feature
@@ -163,12 +162,9 @@ export class WorkspaceBlobResolver {
};
if (checkExceeded(0)) {
throw new GraphQLError('storage or blob size limit exceeded', {
extensions: {
status: HttpStatus[HttpStatus.PAYLOAD_TOO_LARGE],
code: HttpStatus.PAYLOAD_TOO_LARGE,
},
});
throw new PayloadTooLargeException(
'Storage or blob size limit exceeded.'
);
}
const buffer = await new Promise<Buffer>((resolve, reject) => {
const stream = blob.createReadStream();
@@ -180,12 +176,7 @@ export class WorkspaceBlobResolver {
const bufferSize = chunks.reduce((acc, cur) => acc + cur.length, 0);
if (checkExceeded(bufferSize)) {
reject(
new GraphQLError('storage or blob size limit exceeded', {
extensions: {
status: HttpStatus[HttpStatus.PAYLOAD_TOO_LARGE],
code: HttpStatus.PAYLOAD_TOO_LARGE,
},
})
new PayloadTooLargeException('Storage or blob size limit exceeded.')
);
}
});
@@ -194,14 +185,7 @@ export class WorkspaceBlobResolver {
const buffer = Buffer.concat(chunks);
if (checkExceeded(buffer.length)) {
reject(
new GraphQLError('storage limit exceeded', {
extensions: {
status: HttpStatus[HttpStatus.PAYLOAD_TOO_LARGE],
code: HttpStatus.PAYLOAD_TOO_LARGE,
},
})
);
reject(new PayloadTooLargeException('Storage limit exceeded.'));
} else {
resolve(buffer);
}

View File

@@ -1,4 +1,4 @@
import { ForbiddenException, UseGuards } from '@nestjs/common';
import { BadRequestException, UseGuards } from '@nestjs/common';
import {
Args,
Field,
@@ -9,9 +9,12 @@ import {
ResolveField,
Resolver,
} from '@nestjs/graphql';
import type { WorkspacePage as PrismaWorkspacePage } from '@prisma/client';
import {
PrismaClient,
type WorkspacePage as PrismaWorkspacePage,
} from '@prisma/client';
import { CloudThrottlerGuard, PrismaService } from '../../../fundamentals';
import { CloudThrottlerGuard } from '../../../fundamentals';
import { Auth, CurrentUser } from '../../auth';
import { UserType } from '../../users';
import { DocID } from '../../utils/doc';
@@ -43,7 +46,7 @@ class WorkspacePage implements Partial<PrismaWorkspacePage> {
@Resolver(() => WorkspaceType)
export class PagePermissionResolver {
constructor(
private readonly prisma: PrismaService,
private readonly prisma: PrismaClient,
private readonly permission: PermissionService
) {}
@@ -111,7 +114,7 @@ export class PagePermissionResolver {
const docId = new DocID(pageId, workspaceId);
if (docId.isWorkspace) {
throw new ForbiddenException('Expect page not to be workspace');
throw new BadRequestException('Expect page not to be workspace');
}
await this.permission.checkWorkspace(
@@ -148,7 +151,7 @@ export class PagePermissionResolver {
const docId = new DocID(pageId, workspaceId);
if (docId.isWorkspace) {
throw new ForbiddenException('Expect page not to be workspace');
throw new BadRequestException('Expect page not to be workspace');
}
await this.permission.checkWorkspace(
@@ -157,6 +160,15 @@ export class PagePermissionResolver {
Permission.Read
);
const isPublic = await this.permission.isPublicPage(
docId.workspace,
docId.guid
);
if (!isPublic) {
throw new BadRequestException('Page is not public');
}
return this.permission.revokePublicPage(docId.workspace, docId.guid);
}
}

View File

@@ -1,8 +1,9 @@
import {
ForbiddenException,
HttpStatus,
InternalServerErrorException,
Logger,
NotFoundException,
PayloadTooLargeException,
UseGuards,
} from '@nestjs/common';
import {
@@ -14,9 +15,8 @@ import {
ResolveField,
Resolver,
} from '@nestjs/graphql';
import type { User } from '@prisma/client';
import { PrismaClient, type User } from '@prisma/client';
import { getStreamAsBuffer } from 'get-stream';
import { GraphQLError } from 'graphql';
import GraphQLUpload from 'graphql-upload/GraphQLUpload.mjs';
import { applyUpdate, Doc } from 'yjs';
@@ -25,7 +25,6 @@ import {
EventEmitter,
type FileUpload,
MailService,
PrismaService,
Throttle,
} from '../../../fundamentals';
import { Auth, CurrentUser, Public } from '../../auth';
@@ -57,7 +56,7 @@ export class WorkspaceResolver {
constructor(
private readonly auth: AuthService,
private readonly mailer: MailService,
private readonly prisma: PrismaService,
private readonly prisma: PrismaClient,
private readonly permissions: PermissionService,
private readonly quota: QuotaManagementService,
private readonly users: UsersService,
@@ -277,6 +276,7 @@ export class WorkspaceResolver {
id: workspace.id,
workspaceId: workspace.id,
blob: buffer,
updatedAt: new Date(),
},
});
}
@@ -344,12 +344,7 @@ export class WorkspaceResolver {
this.quota.getWorkspaceUsage(workspaceId),
]);
if (memberCount >= quota.memberLimit) {
throw new GraphQLError('Workspace member limit reached', {
extensions: {
status: HttpStatus[HttpStatus.PAYLOAD_TOO_LARGE],
code: HttpStatus.PAYLOAD_TOO_LARGE,
},
});
throw new PayloadTooLargeException('Workspace member limit reached.');
}
let target = await this.users.findUserByEmail(email);
@@ -401,14 +396,8 @@ export class WorkspaceResolver {
`failed to send ${workspaceId} invite email to ${email}, but successfully revoked permission: ${e}`
);
}
return new GraphQLError(
'failed to send invite email, please try again',
{
extensions: {
status: HttpStatus[HttpStatus.INTERNAL_SERVER_ERROR],
code: HttpStatus.INTERNAL_SERVER_ERROR,
},
}
return new InternalServerErrorException(
'Failed to send invite email. Please try again.'
);
}
}

View File

@@ -8,7 +8,7 @@ export class SelfHostAdmin1605053000403 {
// do the migration
static async up(db: PrismaClient, ref: ModuleRef) {
const config = ref.get(Config, { strict: false });
if (config.flavor.selfhosted) {
if (config.isSelfhosted) {
if (
!process.env.AFFINE_ADMIN_EMAIL ||
!process.env.AFFINE_ADMIN_PASSWORD

View File

@@ -0,0 +1,15 @@
import { PrismaClient } from '@prisma/client';
import { FeatureType } from '../../core/features';
import { upsertLatestFeatureVersion } from './utils/user-features';
export class RefreshUnlimitedWorkspaceFeature1708321519830 {
// do the migration
static async up(db: PrismaClient) {
// add unlimited workspace feature
await upsertLatestFeatureVersion(db, FeatureType.UnlimitedWorkspace);
}
// revert the migration
static async down(_db: PrismaClient) {}
}

View File

@@ -3,6 +3,7 @@ import { Prisma, PrismaClient } from '@prisma/client';
import {
CommonFeature,
FeatureKind,
Features,
FeatureType,
} from '../../../core/features';
@@ -33,6 +34,16 @@ export async function upsertFeature(
}
}
export async function upsertLatestFeatureVersion(
db: PrismaClient,
type: FeatureType
) {
const feature = Features.filter(f => f.feature === type);
feature.sort((a, b) => b.version - a.version);
const latestFeature = feature[0];
await upsertFeature(db, latestFeature);
}
export async function migrateNewFeatureTable(prisma: PrismaClient) {
const waitingList = await prisma.newFeaturesWaitingList.findMany();
for (const oldUser of waitingList) {

View File

@@ -1,4 +1,5 @@
import type { ApolloDriverConfig } from '@nestjs/apollo';
import SMTPTransport from 'nodemailer/lib/smtp-transport';
import type { LeafPaths } from '../utils/types';
import { EnvConfigType } from './env';
@@ -18,18 +19,22 @@ export enum ExternalAccount {
firebase = 'firebase',
}
export type ServerFlavor =
| 'allinone'
| 'main'
// @deprecated
| 'graphql'
| 'sync'
| 'selfhosted';
export type ServerFlavor = 'allinone' | 'graphql' | 'sync';
export type AFFINE_ENV = 'dev' | 'beta' | 'production';
export type NODE_ENV = 'development' | 'test' | 'production';
export enum DeploymentType {
Affine = 'affine',
Selfhosted = 'selfhosted',
}
export type ConfigPaths = LeafPaths<
Omit<
AFFiNEConfig,
| 'ENV_MAP'
| 'version'
| 'type'
| 'isSelfhosted'
| 'flavor'
| 'env'
| 'affine'
@@ -63,27 +68,36 @@ export interface AFFiNEConfig {
*/
readonly version: string;
/**
* Deployment type, AFFiNE Cloud, or Selfhosted
*/
get type(): DeploymentType;
/**
* Fast detect whether currently deployed in a selfhosted environment
*/
get isSelfhosted(): boolean;
/**
* Server flavor
*/
get flavor(): {
type: string;
main: boolean;
graphql: boolean;
sync: boolean;
selfhosted: boolean;
};
/**
* Deployment environment
*/
readonly affineEnv: 'dev' | 'beta' | 'production';
readonly AFFINE_ENV: AFFINE_ENV;
/**
* alias to `process.env.NODE_ENV`
*
* @default 'production'
* @default 'development'
* @env NODE_ENV
*/
readonly env: string;
readonly NODE_ENV: NODE_ENV;
/**
* fast AFFiNE environment judge
@@ -101,6 +115,7 @@ export interface AFFiNEConfig {
dev: boolean;
test: boolean;
};
get deploy(): boolean;
/**
@@ -159,6 +174,7 @@ export interface AFFiNEConfig {
*/
featureFlags: {
earlyAccessPreview: boolean;
syncClientVersionCheck: boolean;
};
/**
@@ -249,18 +265,6 @@ export interface AFFiNEConfig {
}
>
>;
/**
* whether to use local email service to send email
* local debug only
*/
localEmail: boolean;
email: {
server: string;
port: number;
login: string;
sender: string;
password: string;
};
captcha: {
/**
* whether to enable captcha
@@ -284,6 +288,13 @@ export interface AFFiNEConfig {
};
};
/**
* Configurations for mail service used to post auth or bussiness mails.
*
* @see https://nodemailer.com/smtp/
*/
mailer?: SMTPTransport.Options;
doc: {
manager: {
/**
@@ -302,11 +313,17 @@ export interface AFFiNEConfig {
updatePollInterval: number;
/**
* Use JwstCodec to merge updates at the same time when merging using Yjs.
* The maximum number of updates that will be pulled from the server at once.
* Existing for avoiding the server to be overloaded when there are too many updates for one doc.
*/
maxUpdatesPullCount: number;
/**
* Use `y-octo` to merge updates at the same time when merging using Yjs.
*
* This is an experimental feature, and aimed to check the correctness of JwstCodec.
*/
experimentalMergeWithJwstCodec: boolean;
experimentalMergeWithYOcto: boolean;
};
history: {
/**

View File

@@ -6,7 +6,14 @@ import { merge } from 'lodash-es';
import parse from 'parse-duration';
import pkg from '../../../package.json' assert { type: 'json' };
import type { AFFiNEConfig, ServerFlavor } from './def';
import {
type AFFINE_ENV,
AFFiNEConfig,
DeploymentType,
type NODE_ENV,
type ServerFlavor,
} from './def';
import { readEnv } from './env';
import { getDefaultAFFiNEStorageConfig } from './storage';
// Don't use this in production
@@ -46,40 +53,62 @@ const jwtKeyPair = (function () {
})();
export const getDefaultAFFiNEConfig: () => AFFiNEConfig = () => {
let isHttps: boolean | null = null;
let flavor = (process.env.SERVER_FLAVOR ?? 'allinone') as ServerFlavor;
const NODE_ENV = readEnv<NODE_ENV>('NODE_ENV', 'development', [
'development',
'test',
'production',
]);
const AFFINE_ENV = readEnv<AFFINE_ENV>('AFFINE_ENV', 'dev', [
'dev',
'beta',
'production',
]);
const flavor = readEnv<ServerFlavor>('SERVER_FLAVOR', 'allinone', [
'allinone',
'graphql',
'sync',
]);
const deploymentType = readEnv<DeploymentType>(
'DEPLOYMENT_TYPE',
NODE_ENV === 'development'
? DeploymentType.Affine
: DeploymentType.Selfhosted,
Object.values(DeploymentType)
);
const isSelfhosted = deploymentType === DeploymentType.Selfhosted;
const defaultConfig = {
serverId: 'affine-nestjs-server',
serverName: flavor === 'selfhosted' ? 'Self-Host Cloud' : 'AFFiNE Cloud',
serverName: isSelfhosted ? 'Self-Host Cloud' : 'AFFiNE Cloud',
version: pkg.version,
get type() {
return deploymentType;
},
get isSelfhosted() {
return isSelfhosted;
},
get flavor() {
if (flavor === 'graphql') {
flavor = 'main';
}
return {
type: flavor,
main: flavor === 'main' || flavor === 'allinone',
graphql: flavor === 'graphql' || flavor === 'allinone',
sync: flavor === 'sync' || flavor === 'allinone',
selfhosted: flavor === 'selfhosted',
};
},
ENV_MAP: {},
affineEnv: 'dev',
AFFINE_ENV,
get affine() {
const env = this.affineEnv;
return {
canary: env === 'dev',
beta: env === 'beta',
stable: env === 'production',
canary: AFFINE_ENV === 'dev',
beta: AFFINE_ENV === 'beta',
stable: AFFINE_ENV === 'production',
};
},
env: process.env.NODE_ENV ?? 'development',
NODE_ENV,
get node() {
const env = this.env;
return {
prod: env === 'production',
dev: env === 'development',
test: env === 'test',
prod: NODE_ENV === 'production',
dev: NODE_ENV === 'development',
test: NODE_ENV === 'test',
};
},
get deploy() {
@@ -87,13 +116,9 @@ export const getDefaultAFFiNEConfig: () => AFFiNEConfig = () => {
},
featureFlags: {
earlyAccessPreview: false,
syncClientVersionCheck: false,
},
get https() {
return isHttps ?? !this.node.dev;
},
set https(value: boolean) {
isHttps = value;
},
https: false,
host: 'localhost',
port: 3010,
path: '',
@@ -142,14 +167,6 @@ export const getDefaultAFFiNEConfig: () => AFFiNEConfig = () => {
return this.privateKey;
},
oauthProviders: {},
localEmail: false,
email: {
server: 'smtp.gmail.com',
port: 465,
login: '',
sender: '',
password: '',
},
},
storage: getDefaultAFFiNEStorageConfig(),
rateLimiter: {
@@ -160,7 +177,8 @@ export const getDefaultAFFiNEConfig: () => AFFiNEConfig = () => {
manager: {
enableUpdateAutoMerging: flavor !== 'sync',
updatePollInterval: 3000,
experimentalMergeWithJwstCodec: false,
maxUpdatesPullCount: 500,
experimentalMergeWithYOcto: false,
},
history: {
interval: 1000 * 60 * 10 /* 10 mins */,

View File

@@ -48,3 +48,24 @@ export function applyEnvToConfig(rawConfig: AFFiNEConfig) {
}
}
}
export function readEnv<T>(
env: string,
defaultValue: T,
availableValues?: T[]
) {
const value = process.env[env];
if (value === undefined) {
return defaultValue;
}
if (availableValues && !availableValues.includes(value as any)) {
throw new Error(
`Invalid value '${value}' for environment variable ${env}, expected one of [${availableValues.join(
', '
)}]`
);
}
return value as T;
}

View File

@@ -1,37 +1,34 @@
import { homedir } from 'node:os';
import { join } from 'node:path';
import { S3ClientConfigType } from '@aws-sdk/client-s3';
export type StorageProviderType = 'fs' | 'r2' | 's3';
export interface FsStorageConfig {
path: string;
}
export type R2StorageConfig = S3ClientConfigType & {
accountId: string;
};
export type S3StorageConfig = S3ClientConfigType;
export type StorageTargetConfig<Ext = unknown> = {
export interface StorageProvidersConfig {
fs: FsStorageConfig;
}
export type StorageProviderType = keyof StorageProvidersConfig;
export type StorageConfig<Ext = unknown> = {
provider: StorageProviderType;
bucket: string;
} & Ext;
export interface StoragesConfig {
avatar: StorageConfig<{ publicLinkFactory: (key: string) => string }>;
blob: StorageConfig;
}
export interface AFFiNEStorageConfig {
/**
* All providers for object storage
*
* Support different providers for different usage at the same time.
*/
providers: {
fs?: FsStorageConfig;
s3?: S3StorageConfig;
r2?: R2StorageConfig;
};
storages: {
avatar: StorageTargetConfig<{ publicLinkFactory: (key: string) => string }>;
blob: StorageTargetConfig;
};
providers: StorageProvidersConfig;
storages: StoragesConfig;
}
export type StorageProviders = AFFiNEStorageConfig['providers'];

View File

@@ -0,0 +1 @@
export * from './payment-required';

View File

@@ -0,0 +1,10 @@
import { HttpException, HttpStatus } from '@nestjs/common';
export class PaymentRequiredException extends HttpException {
constructor(desc?: string, code: string = 'Payment Required') {
super(
HttpException.createBody(desc ?? code, code, HttpStatus.PAYMENT_REQUIRED),
HttpStatus.PAYMENT_REQUIRED
);
}
}

View File

@@ -17,17 +17,19 @@ export type PathType<T, Path extends string> = string extends Path
: unknown
: unknown;
export type Leaves<T, P extends string = ''> = T extends Payload<any>
? P
: T extends Record<string, any>
? {
[K in keyof T]: K extends string ? Leaves<T[K], Join<P, K>> : never;
}[keyof T]
: never;
export type Leaves<T, P extends string = ''> =
T extends Payload<any>
? P
: T extends Record<string, any>
? {
[K in keyof T]: K extends string ? Leaves<T[K], Join<P, K>> : never;
}[keyof T]
: never;
export type Flatten<T> = Leaves<T> extends infer R
? {
// @ts-expect-error yo, ts can't make it
[K in R]: PathType<T, K> extends Payload<infer U> ? U : never;
}
: never;
export type Flatten<T> =
Leaves<T> extends infer R
? {
// @ts-expect-error yo, ts can't make it
[K in R]: PathType<T, K> extends Payload<infer U> ? U : never;
}
: never;

View File

@@ -3,9 +3,10 @@ import { fileURLToPath } from 'node:url';
import type { ApolloDriverConfig } from '@nestjs/apollo';
import { ApolloDriver } from '@nestjs/apollo';
import { Global, Module } from '@nestjs/common';
import { Global, HttpException, HttpStatus, Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { Request, Response } from 'express';
import { GraphQLError } from 'graphql';
import { Config } from '../config';
import { GQLLoggerPlugin } from './logger-plugin';
@@ -34,7 +35,37 @@ import { GQLLoggerPlugin } from './logger-plugin';
res,
isAdminQuery: false,
}),
includeStacktraceInErrorResponses: !config.node.prod,
plugins: [new GQLLoggerPlugin()],
formatError: (formattedError, error) => {
// @ts-expect-error allow assign
formattedError.extensions ??= {};
if (
error instanceof GraphQLError &&
error.originalError instanceof HttpException
) {
const statusCode = error.originalError.getStatus();
const statusName = HttpStatus[statusCode];
// originally be 'INTERNAL_SERVER_ERROR'
formattedError.extensions['code'] = statusCode;
formattedError.extensions['status'] = statusName;
delete formattedError.extensions['originalError'];
return formattedError;
} else {
// @ts-expect-error allow assign
formattedError.message = 'Internal Server Error';
formattedError.extensions['code'] =
HttpStatus.INTERNAL_SERVER_ERROR;
formattedError.extensions['status'] =
HttpStatus[HttpStatus.INTERNAL_SERVER_ERROR];
}
return formattedError;
},
};
},
inject: [Config],

View File

@@ -4,7 +4,7 @@ import {
GraphQLRequestListener,
} from '@apollo/server';
import { Plugin } from '@nestjs/apollo';
import { Logger } from '@nestjs/common';
import { HttpException, Logger } from '@nestjs/common';
import { Response } from 'express';
import { metrics } from '../metrics/metrics';
@@ -27,28 +27,44 @@ export class GQLLoggerPlugin implements ApolloServerPlugin {
metrics.gql.counter('query_counter').add(1, { operation });
const start = Date.now();
function endTimer() {
return Date.now() - start;
}
return Promise.resolve({
willSendResponse: () => {
const costInMilliseconds = Date.now() - start;
res.setHeader(
'Server-Timing',
`gql;dur=${costInMilliseconds};desc="GraphQL"`
);
metrics.gql
.histogram('query_duration')
.record(costInMilliseconds, { operation });
const time = endTimer();
res.setHeader('Server-Timing', `gql;dur=${time};desc="GraphQL"`);
metrics.gql.histogram('query_duration').record(time, { operation });
return Promise.resolve();
},
didEncounterErrors: () => {
const costInMilliseconds = Date.now() - start;
res.setHeader(
'Server-Timing',
`gql;dur=${costInMilliseconds};desc="GraphQL ${operation}"`
);
metrics.gql
.histogram('query_duration')
.record(costInMilliseconds, { operation });
didEncounterErrors: ctx => {
metrics.gql.counter('query_error_counter').add(1, { operation });
ctx.errors.forEach(err => {
// only log non-user errors
let msg: string | undefined;
if (!err.originalError) {
msg = err.toString();
} else {
const originalError = err.originalError;
// do not log client errors, and put more information in the error extensions.
if (!(originalError instanceof HttpException)) {
if (originalError.cause && originalError.cause instanceof Error) {
msg = originalError.cause.stack ?? originalError.cause.message;
} else {
msg = originalError.stack ?? originalError.message;
}
}
}
if (msg) {
this.logger.error('GraphQL Unhandled Error', msg);
}
});
return Promise.resolve();
},
});

View File

@@ -9,15 +9,21 @@ export {
applyEnvToConfig,
Config,
type ConfigPaths,
DeploymentType,
getDefaultAFFiNEStorageConfig,
} from './config';
export * from './error';
export { EventEmitter, type EventPayload, OnEvent } from './event';
export { MailService } from './mailer';
export { CallCounter, CallTimer, metrics } from './metrics';
export { getOptionalModuleMetadata, OptionalModule } from './nestjs';
export { PrismaService } from './prisma';
export {
getOptionalModuleMetadata,
GlobalExceptionFilter,
OptionalModule,
} from './nestjs';
export { SessionService } from './session';
export * from './storage';
export { type StorageProvider, StorageProviderFactory } from './storage';
export { AuthThrottlerGuard, CloudThrottlerGuard, Throttle } from './throttler';
export {
getRequestFromHost,
@@ -25,4 +31,3 @@ export {
getRequestResponseFromHost,
} from './utils/request';
export type * from './utils/types';
export { SocketIoAdapter } from './websocket';

View File

@@ -1,11 +1,21 @@
import { Global, Module } from '@nestjs/common';
import { OptionalModule } from '../nestjs';
import { MailService } from './mail.service';
import { MAILER } from './mailer';
@Global()
@OptionalModule({
providers: [MAILER],
exports: [MAILER],
requires: ['mailer.auth.user', 'mailer.auth.pass'],
})
class MailerModule {}
@Global()
@Module({
providers: [MAILER, MailService],
imports: [MailerModule],
providers: [MailService],
exports: [MailService],
})
export class MailModule {}

View File

@@ -1,30 +1,28 @@
import { Inject, Injectable } from '@nestjs/common';
import { Inject, Injectable, Optional } from '@nestjs/common';
import { Config } from '../config';
import {
MAILER_SERVICE,
type MailerService,
type Options,
type Response,
} from './mailer';
import { MAILER_SERVICE, type MailerService, type Options } from './mailer';
import { emailTemplate } from './template';
@Injectable()
export class MailService {
constructor(
@Inject(MAILER_SERVICE) private readonly mailer: MailerService,
private readonly config: Config
private readonly config: Config,
@Optional() @Inject(MAILER_SERVICE) private readonly mailer?: MailerService
) {}
async sendMail(options: Options): Promise<Response> {
return this.mailer.sendMail(options);
async sendMail(options: Options) {
if (!this.mailer) {
throw new Error('Mailer service is not configured.');
}
return this.mailer.sendMail({
from: this.config.mailer?.from,
...options,
});
}
hasConfigured() {
return (
!!this.config.auth.email.login &&
!!this.config.auth.email.password &&
!!this.config.auth.email.sender
);
return !!this.mailer;
}
async sendInviteEmail(
@@ -80,7 +78,6 @@ export class MailService {
});
return this.sendMail({
from: this.config.auth.email.sender,
to,
subject: `${invitationInfo.user.name} invited you to join ${invitationInfo.workspace.name}`,
html,
@@ -119,7 +116,6 @@ export class MailService {
buttonUrl: url,
});
return this.sendMail({
from: this.config.auth.email.sender,
to,
subject: `Modify your AFFiNE password`,
html,
@@ -135,7 +131,6 @@ export class MailService {
buttonUrl: url,
});
return this.sendMail({
from: this.config.auth.email.sender,
to,
subject: `Set your AFFiNE password`,
html,
@@ -150,7 +145,6 @@ export class MailService {
buttonUrl: url,
});
return this.sendMail({
from: this.config.auth.email.sender,
to,
subject: `Verify your current email for AFFiNE`,
html,
@@ -165,7 +159,6 @@ export class MailService {
buttonUrl: url,
});
return this.sendMail({
from: this.config.auth.email.sender,
to,
subject: `Verify your new email for AFFiNE`,
html,
@@ -177,7 +170,6 @@ export class MailService {
content: `As per your request, we have changed your email. Please make sure you're using ${to} when you log in the next time. `,
});
return this.sendMail({
from: this.config.auth.email.sender,
to,
subject: `Your email has been changed`,
html,
@@ -200,7 +192,6 @@ export class MailService {
content: `${inviteeName} has joined ${workspaceName}`,
});
return this.sendMail({
from: this.config.auth.email.sender,
to,
subject: title,
html,
@@ -223,7 +214,6 @@ export class MailService {
content: `${inviteeName} has left your workspace`,
});
return this.sendMail({
from: this.config.auth.email.sender,
to,
subject: title,
html,

View File

@@ -11,28 +11,11 @@ export type Response = SMTPTransport.SentMessageInfo;
export type Options = SMTPTransport.Options;
export const MAILER: FactoryProvider<
Transporter<SMTPTransport.SentMessageInfo>
Transporter<SMTPTransport.SentMessageInfo> | undefined
> = {
provide: MAILER_SERVICE,
useFactory: (config: Config) => {
if (config.auth.localEmail) {
return createTransport({
host: '0.0.0.0',
port: 1025,
secure: false,
auth: {
user: config.auth.email.login,
pass: config.auth.email.password,
},
});
}
return createTransport({
service: 'gmail',
auth: {
user: config.auth.email.login,
pass: config.auth.email.password,
},
});
return config.mailer ? createTransport(config.mailer) : undefined;
},
inject: [Config],
};

View File

@@ -1,28 +1,48 @@
import { Global, Module, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
import {
Global,
Module,
OnModuleDestroy,
OnModuleInit,
Provider,
} from '@nestjs/common';
import { ModuleRef } from '@nestjs/core';
import { NodeSDK } from '@opentelemetry/sdk-node';
import { Config, parseEnvValue } from '../config';
import { createSDK, registerCustomMetrics } from './opentelemetry';
import { Config } from '../config';
import {
LocalOpentelemetryFactory,
OpentelemetryFactory,
registerCustomMetrics,
} from './opentelemetry';
const factorProvider: Provider = {
provide: OpentelemetryFactory,
useFactory: (config: Config) => {
return config.metrics.enabled ? new LocalOpentelemetryFactory() : null;
},
inject: [Config],
};
@Global()
@Module({})
@Module({
providers: [factorProvider],
exports: [factorProvider],
})
export class MetricsModule implements OnModuleInit, OnModuleDestroy {
private sdk: NodeSDK | null = null;
constructor(private readonly config: Config) {}
constructor(private readonly ref: ModuleRef) {}
onModuleInit() {
if (
this.config.metrics.enabled &&
!parseEnvValue(process.env.DISABLE_TELEMETRY, 'boolean')
) {
this.sdk = createSDK();
const factor = this.ref.get(OpentelemetryFactory, { strict: false });
if (factor) {
this.sdk = factor.create();
this.sdk.start();
registerCustomMetrics();
}
}
async onModuleDestroy() {
if (this.config.metrics.enabled && this.sdk) {
if (this.sdk) {
await this.sdk.shutdown();
}
}
@@ -30,3 +50,4 @@ export class MetricsModule implements OnModuleInit, OnModuleDestroy {
export * from './metrics';
export * from './utils';
export { OpentelemetryFactory };

View File

@@ -1,6 +1,4 @@
import { MetricExporter } from '@google-cloud/opentelemetry-cloud-monitoring-exporter';
import { TraceExporter } from '@google-cloud/opentelemetry-cloud-trace-exporter';
import { GcpDetectorSync } from '@google-cloud/opentelemetry-resource-util';
import { OnModuleDestroy } from '@nestjs/common';
import { metrics } from '@opentelemetry/api';
import {
CompositePropagator,
@@ -18,16 +16,13 @@ import { NestInstrumentation } from '@opentelemetry/instrumentation-nestjs-core'
import { SocketIoInstrumentation } from '@opentelemetry/instrumentation-socket.io';
import { Resource } from '@opentelemetry/resources';
import {
ConsoleMetricExporter,
type MeterProvider,
MetricProducer,
MetricReader,
PeriodicExportingMetricReader,
} from '@opentelemetry/sdk-metrics';
import { NodeSDK } from '@opentelemetry/sdk-node';
import {
BatchSpanProcessor,
ConsoleSpanExporter,
SpanExporter,
TraceIdRatioBasedSampler,
} from '@opentelemetry/sdk-trace-node';
@@ -38,7 +33,7 @@ import { PrismaMetricProducer } from './prisma';
const { PrismaInstrumentation } = prismaInstrument;
abstract class OpentelemetryFactor {
export abstract class OpentelemetryFactory {
abstract getMetricReader(): MetricReader;
abstract getSpanExporter(): SpanExporter;
@@ -59,7 +54,7 @@ abstract class OpentelemetryFactor {
getResource() {
return new Resource({
[SemanticResourceAttributes.K8S_NAMESPACE_NAME]: AFFiNE.affineEnv,
[SemanticResourceAttributes.K8S_NAMESPACE_NAME]: AFFiNE.AFFINE_ENV,
[SemanticResourceAttributes.SERVICE_NAME]: AFFiNE.flavor.type,
[SemanticResourceAttributes.SERVICE_VERSION]: AFFiNE.version,
});
@@ -85,32 +80,20 @@ abstract class OpentelemetryFactor {
}
}
class GCloudOpentelemetryFactor extends OpentelemetryFactor {
override getResource(): Resource {
return super.getResource().merge(new GcpDetectorSync().detect());
export class LocalOpentelemetryFactory
extends OpentelemetryFactory
implements OnModuleDestroy
{
private readonly metricsExporter = new PrometheusExporter({
metricProducers: this.getMetricsProducers(),
});
async onModuleDestroy() {
await this.metricsExporter.shutdown();
}
override getMetricReader(): MetricReader {
return new PeriodicExportingMetricReader({
exportIntervalMillis: 30000,
exportTimeoutMillis: 10000,
exporter: new MetricExporter({
prefix: 'custom.googleapis.com',
}),
metricProducers: this.getMetricsProducers(),
});
}
override getSpanExporter(): SpanExporter {
return new TraceExporter();
}
}
class LocalOpentelemetryFactor extends OpentelemetryFactor {
override getMetricReader(): MetricReader {
return new PrometheusExporter({
metricProducers: this.getMetricsProducers(),
});
return this.metricsExporter;
}
override getSpanExporter(): SpanExporter {
@@ -118,33 +101,6 @@ class LocalOpentelemetryFactor extends OpentelemetryFactor {
}
}
class DebugOpentelemetryFactor extends OpentelemetryFactor {
override getMetricReader(): MetricReader {
return new PeriodicExportingMetricReader({
exporter: new ConsoleMetricExporter(),
metricProducers: this.getMetricsProducers(),
});
}
override getSpanExporter(): SpanExporter {
return new ConsoleSpanExporter();
}
}
// TODO(@forehalo): make it configurable
export function createSDK() {
let factor: OpentelemetryFactor | null = null;
if (process.env.NODE_ENV === 'production') {
factor = new GCloudOpentelemetryFactor();
} else if (process.env.DEBUG_METRICS) {
factor = new DebugOpentelemetryFactor();
} else {
factor = new LocalOpentelemetryFactor();
}
return factor?.create();
}
function getMeterProvider() {
return metrics.getMeterProvider();
}

View File

@@ -0,0 +1,25 @@
import { ArgumentsHost, Catch, HttpException } from '@nestjs/common';
import { BaseExceptionFilter } from '@nestjs/core';
import { GqlContextType } from '@nestjs/graphql';
import { Response } from 'express';
@Catch()
export class GlobalExceptionFilter extends BaseExceptionFilter {
override catch(exception: Error, host: ArgumentsHost) {
// with useGlobalFilters, the context is always HTTP
if (host.getType<GqlContextType>() === 'graphql') {
// let Graphql LoggerPlugin handle it
// see '../graphql/logger-plugin.ts'
throw exception;
} else {
if (exception instanceof HttpException) {
const res = host.switchToHttp().getResponse<Response>();
res.status(exception.getStatus()).send(exception.getResponse());
return;
} else {
super.catch(exception, host);
}
}
}
}

View File

@@ -1 +1,2 @@
export * from './exception';
export * from './optional-module';

View File

@@ -52,6 +52,7 @@ export function OptionalModule(metadata: OptionalModuleMetadata) {
metadata.providers = (metadata.providers ?? []).concat(
metadata.overrides
);
// eslint-disable-next-line @typescript-eslint/no-floating-promises
metadata.exports = (metadata.exports ?? []).concat(metadata.overrides);
}

View File

@@ -3,16 +3,16 @@ import { PrismaClient } from '@prisma/client';
import { PrismaService } from './service';
// both `PrismaService` and `PrismaClient` can be injected
// only `PrismaClient` can be injected
const clientProvider: Provider = {
provide: PrismaClient,
useExisting: PrismaService,
useClass: PrismaService,
};
@Global()
@Module({
providers: [PrismaService, clientProvider],
exports: [PrismaService, clientProvider],
providers: [clientProvider],
exports: [clientProvider],
})
export class PrismaModule {}
export { PrismaService } from './service';

View File

@@ -5,7 +5,7 @@ import { SessionCache } from '../cache';
@Injectable()
export class SessionService {
private readonly prefix = 'session:';
private readonly sessionTtl = 30 * 60 * 1000; // 30 min
public readonly sessionTtl = 30 * 60 * 1000; // 30 min
constructor(private readonly cache: SessionCache) {}

View File

@@ -1,38 +1,24 @@
import { createRequire } from 'node:module';
import { Global, Module } from '@nestjs/common';
export const StorageProvide = Symbol('Storage');
import { registerStorageProvider, StorageProviderFactory } from './providers';
import { FsStorageProvider } from './providers/fs';
let storageModule: typeof import('@affine/storage');
try {
storageModule = await import('@affine/storage');
} catch {
const require = createRequire(import.meta.url);
storageModule =
process.arch === 'arm64'
? require('../../../storage.arm64.node')
: process.arch === 'arm'
? require('../../../storage.armv7.node')
: require('../../../storage.node');
}
registerStorageProvider('fs', (config, bucket) => {
if (!config.storage.providers.fs) {
throw new Error('Missing fs storage provider configuration');
}
export { storageModule as OctoBaseStorageModule };
return new FsStorageProvider(config.storage.providers.fs, bucket);
});
export const mergeUpdatesInApplyWay = storageModule.mergeUpdatesInApplyWay;
export const verifyChallengeResponse = async (
response: any,
bits: number,
resource: string
) => {
if (typeof response !== 'string' || !response || !resource) return false;
return storageModule.verifyChallengeResponse(response, bits, resource);
};
export const mintChallengeResponse = async (resource: string, bits: number) => {
if (!resource) return null;
return storageModule.mintChallengeResponse(resource, bits);
};
@Global()
@Module({
providers: [StorageProviderFactory],
exports: [StorageProviderFactory],
})
export class StorageProviderModule {}
export * from './native';
export type {
BlobInputType,
BlobOutputType,
@@ -41,5 +27,5 @@ export type {
PutObjectMetadata,
StorageProvider,
} from './providers';
export { createStorageProvider } from './providers';
export { toBuffer } from './providers/utils';
export { registerStorageProvider, StorageProviderFactory } from './providers';
export { autoMetadata, toBuffer } from './providers/utils';

View File

@@ -0,0 +1,30 @@
import { createRequire } from 'node:module';
let storageModule: typeof import('@affine/storage');
try {
storageModule = await import('@affine/storage');
} catch {
const require = createRequire(import.meta.url);
storageModule =
process.arch === 'arm64'
? require('../../../storage.arm64.node')
: process.arch === 'arm'
? require('../../../storage.armv7.node')
: require('../../../storage.node');
}
export const mergeUpdatesInApplyWay = storageModule.mergeUpdatesInApplyWay;
export const verifyChallengeResponse = async (
response: any,
bits: number,
resource: string
) => {
if (typeof response !== 'string' || !response || !resource) return false;
return storageModule.verifyChallengeResponse(response, bits, resource);
};
export const mintChallengeResponse = async (resource: string, bits: number) => {
if (!resource) return null;
return storageModule.mintChallengeResponse(resource, bits);
};

Some files were not shown because too many files have changed in this diff Show More