feat: bump more deps (#14079)

This commit is contained in:
DarkSky
2025-12-10 16:02:28 +08:00
committed by GitHub
parent 40f3337d45
commit cb0ff04efa
194 changed files with 2155 additions and 2297 deletions
+4 -3
View File
@@ -1,7 +1,8 @@
[package]
edition = "2021"
name = "affine_server_native"
version = "1.0.0"
edition = "2021"
license-file = "LICENSE"
name = "affine_server_native"
version = "1.0.0"
[lib]
crate-type = ["cdylib"]
+44
View File
@@ -0,0 +1,44 @@
The AFFiNE Enterprise Edition (EE) license (the “EE License”)
Copyright (c) 2022-present TOEVERYTHING PTE. LTD. and its affiliates.
With regard to the AFFiNE Software:
This software and associated documentation files (the "Software") may only be
used in production, if you (and any entity that you represent) have agreed to,
and are in compliance with, the AFFiNE Subscription Terms of Service, available
at https://affine.pro/terms/#subscription (the “EE Terms”), or other
agreement governing the use of the Software, as agreed by you and AFFiNE,
and otherwise have a valid AFFiNE Enterprise Edition subscription for the
correct number of user seats. Subject to the foregoing sentence, you are free to
modify this Software and publish patches to the Software. You agree that AFFiNE
and/or its licensors (as applicable) retain all right, title and interest in and
to all such modifications and/or patches, and all such modifications and/or
patches may only be used, copied, modified, displayed, distributed, or otherwise
exploited with a valid AFFiNE Enterprise Edition subscription for the correct
number of user seats. Notwithstanding the foregoing, you may copy and modify
the Software for development and testing purposes, without requiring a
subscription. You agree that AFFiNE and/or its licensors (as applicable) retain
all right, title and interest in and to all such modifications. You are not
granted any other rights beyond what is expressly stated herein. Subject to the
foregoing, it is forbidden to copy, merge, publish, distribute, sublicense,
and/or sell the Software.
This EE License applies only to the part of this Software that is not
distributed as part of AFFiNE Community Edition (CE). Any part of this Software
distributed as part of AFFiNE CE or is served client-side as an image, font,
cascading stylesheet (CSS), file which produces or is compiled, arranged,
augmented, or combined into client-side JavaScript, in whole or in part, is
copyrighted under the MPL2.0 license. The full text of this EE License shall
be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
For all third party components incorporated into the AFFiNE Software, those
components are licensed under the original license provided by the owner of the
applicable component.
+18 -18
View File
@@ -28,15 +28,15 @@
"dependencies": {
"@affine/reader": "workspace:*",
"@affine/server-native": "workspace:*",
"@ai-sdk/anthropic": "^2.0.53",
"@ai-sdk/anthropic": "^2.0.54",
"@ai-sdk/google": "^2.0.45",
"@ai-sdk/google-vertex": "^3.0.87",
"@ai-sdk/google-vertex": "^3.0.88",
"@ai-sdk/openai": "^2.0.80",
"@ai-sdk/openai-compatible": "^1.0.28",
"@ai-sdk/perplexity": "^2.0.21",
"@apollo/server": "^4.12.2",
"@aws-sdk/client-s3": "^3.947.0",
"@aws-sdk/s3-request-presigner": "^3.947.0",
"@aws-sdk/client-s3": "^3.948.0",
"@aws-sdk/s3-request-presigner": "^3.948.0",
"@fal-ai/serverless-client": "^0.15.0",
"@google-cloud/opentelemetry-cloud-trace-exporter": "^3.0.0",
"@google-cloud/opentelemetry-resource-util": "^3.0.0",
@@ -78,7 +78,7 @@
"ai": "^5.0.108",
"bullmq": "^5.40.2",
"cookie-parser": "^1.4.7",
"cross-env": "^7.0.3",
"cross-env": "^10.1.0",
"date-fns": "^4.0.0",
"dotenv": "^16.4.7",
"eventemitter2": "^6.4.9",
@@ -101,27 +101,27 @@
"lodash-es": "^4.17.21",
"mixpanel": "^0.18.0",
"mustache": "^4.2.0",
"nanoid": "^5.0.9",
"nanoid": "^5.1.6",
"nest-commander": "^3.15.0",
"nest-winston": "^1.9.7",
"nestjs-cls": "^6.0.0",
"nodemailer": "^7.0.0",
"nodemailer": "^7.0.11",
"on-headers": "^1.1.0",
"piscina": "^5.0.0-alpha.0",
"piscina": "^5.1.4",
"prisma": "^6.6.0",
"react": "19.1.0",
"react-dom": "19.1.0",
"react": "^19.2.1",
"react-dom": "19.2.1",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.1",
"semver": "^7.6.3",
"ses": "^1.10.0",
"rxjs": "^7.8.2",
"semver": "^7.7.3",
"ses": "^1.14.0",
"socket.io": "^4.8.1",
"stripe": "^17.4.0",
"tldts": "^7.0.0",
"stripe": "^17.7.0",
"tldts": "^7.0.19",
"ts-node": "^10.9.2",
"typescript": "^5.7.2",
"winston": "^3.17.0",
"yjs": "^13.6.21",
"yjs": "^13.6.27",
"zod": "^3.25.76"
},
"devDependencies": {
@@ -150,10 +150,10 @@
"@types/supertest": "^6.0.2",
"ava": "^6.4.0",
"c8": "^10.1.3",
"nodemon": "^3.1.7",
"nodemon": "^3.1.11",
"react-email": "4.0.11",
"sinon": "^21.0.0",
"supertest": "^7.0.0",
"supertest": "^7.1.4",
"why-is-node-running": "^3.2.2"
},
"nodemonConfig": {
@@ -144,12 +144,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Sign in with Magic Link</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -276,12 +284,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Sign up with Magic Link</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -376,12 +392,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Sign in to AFFiNE</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -457,12 +481,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Set new password</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -556,12 +588,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Verify your email address</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -655,12 +695,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Verify and set up a new email address</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -738,12 +786,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Verify your new email address</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -891,12 +947,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Accept &amp; Join</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -982,12 +1046,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Open Workspace Members</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -1141,12 +1213,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Review request</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -1495,12 +1575,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Open Doc</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -1581,12 +1669,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>View Comment</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -1668,12 +1764,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>View Comment</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -1764,12 +1868,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Open Workspace</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -1855,12 +1967,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Go to Workspace</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -1948,12 +2068,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Go to Workspace</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -2054,12 +2182,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Go to Billing</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -2162,12 +2298,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Go to Billing</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -2341,12 +2485,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Go to Billing</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -2435,12 +2587,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Go to Billing</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -2598,12 +2758,20 @@ Generated by [AVA](https://avajs.dev).
style="line-height:24px;text-decoration:none;display:inline-block;max-width:100%;mso-padding-alt:0px;font-size:15px;font-weight:600;font-family:Inter, Arial, Helvetica, sans-serif;margin-top:24px;margin-bottom:0;color:#FFFFFF;background-color:#1E96EB;padding:8px 18px 8px 18px;border-radius:8px;border:1px solid rgba(0,0,0,.1);margin-right:4px"␊
target="_blank"␊
><span␊
><!--[if mso]><i style="mso-font-width:450%;mso-text-raise:12" hidden>&#8202;&#8202;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%;mso-text-raise:12" hidden␊
>&#8202;&#8202;</i␊
><!␊
[endif]--></span␊
><span␊
style="max-width:100%;display:inline-block;line-height:120%;mso-padding-alt:0px;mso-text-raise:6px"␊
>Open Doc</span␊
><span␊
><!--[if mso]><i style="mso-font-width:450%" hidden>&#8202;&#8202;&#8203;</i><![endif]--></span
><!--[if mso␊
]><i style="mso-font-width:450%" hidden␊
>&#8202;&#8202;&#8203;</i␊
><!␊
[endif]--></span␊
></a␊
>␊
</tr>␊
@@ -46,8 +46,10 @@ export const CurrentUser = createParamDecorator(
}
);
export interface CurrentUser
extends Pick<User, 'id' | 'email' | 'avatarUrl' | 'name' | 'disabled'> {
export interface CurrentUser extends Pick<
User,
'id' | 'email' | 'avatarUrl' | 'name' | 'disabled'
> {
hasPassword: boolean | null;
emailVerified: boolean;
}
@@ -26,9 +26,9 @@ export function getAccessController<Type extends ResourceType>(
return provider;
}
export abstract class AccessController<Type extends ResourceType>
implements OnModuleInit
{
export abstract class AccessController<
Type extends ResourceType,
> implements OnModuleInit {
protected abstract readonly type: Type;
protected logger = new Logger(AccessController.name);
@@ -77,9 +77,10 @@ class CreateChatSessionInput {
}
@InputType()
class UpdateChatSessionInput
implements Omit<UpdateChatSession, 'userId' | 'title'>
{
class UpdateChatSessionInput implements Omit<
UpdateChatSession,
'userId' | 'title'
> {
@Field(() => String)
sessionId!: string;
@@ -58,8 +58,10 @@ export interface SearchQueryDSL extends BaseQueryDSL {
};
}
export interface TopHitsDSL
extends Omit<SearchQueryDSL, 'query' | 'sort' | 'from' | 'cursor'> {}
export interface TopHitsDSL extends Omit<
SearchQueryDSL,
'query' | 'sort' | 'from' | 'cursor'
> {}
export interface AggregateQueryDSL extends BaseQueryDSL {
aggs: {
+1 -1
View File
@@ -17,7 +17,7 @@
"@graphql-codegen/typescript": "^4.1.2",
"@graphql-codegen/typescript-operations": "^4.4.0",
"@types/lodash-es": "^4.17.12",
"prettier": "^3.4.2",
"prettier": "^3.7.4",
"vitest": "^3.2.4"
},
"scripts": {
+5 -5
View File
@@ -18,7 +18,7 @@
"@affine/templates": "workspace:*",
"@preact/signals-core": "^1.8.0",
"eventemitter2": "^6.4.9",
"foxact": "^0.2.43",
"foxact": "^0.2.49",
"fractional-indexing": "^3.2.0",
"fuse.js": "^7.0.0",
"graphemer": "^1.4.0",
@@ -26,9 +26,9 @@
"jotai": "^2.10.3",
"jotai-effect": "^2.0.0",
"lodash-es": "^4.17.21",
"nanoid": "^5.0.9",
"react": "19.1.0",
"yjs": "^13.6.21",
"nanoid": "^5.1.6",
"react": "^19.2.1",
"yjs": "^13.6.27",
"zod": "^3.25.76"
},
"devDependencies": {
@@ -38,7 +38,7 @@
"@testing-library/react": "^16.1.0",
"@types/react": "^19.0.1",
"fake-indexeddb": "^6.0.0",
"rxjs": "^7.8.1",
"rxjs": "^7.8.2",
"vitest": "^3.2.4"
},
"peerDependencies": {
@@ -64,7 +64,8 @@ export class ObjectPool<Key, T> {
private gc() {
for (const [key, { obj, rc }] of new Map(
this.objects /* clone the map, because the origin will be modified during iteration */
this
.objects /* clone the map, because the origin will be modified during iteration */
)) {
if (
rc === 0 &&
+5 -5
View File
@@ -22,13 +22,13 @@
"@toeverything/infra": "workspace:*",
"eventemitter2": "^6.4.9",
"graphemer": "^1.4.0",
"lib0": "^0.2.99",
"lib0": "^0.2.114",
"lodash-es": "^4.17.21",
"nanoid": "^5.0.9",
"rxjs": "^7.8.1",
"uuid": "^11.0.3",
"nanoid": "^5.1.6",
"rxjs": "^7.8.2",
"uuid": "^11.1.0",
"y-protocols": "^1.0.6",
"yjs": "^13.6.21"
"yjs": "^13.6.27"
},
"devDependencies": {
"@affine/error": "workspace:*",
@@ -21,9 +21,9 @@ export interface Connection<T = any> {
): () => void;
}
export abstract class AutoReconnectConnection<T = any>
implements Connection<T>
{
export abstract class AutoReconnectConnection<
T = any,
> implements Connection<T> {
private readonly event = new EventEmitter2({
maxListeners: 100,
});
+1 -1
View File
@@ -15,7 +15,7 @@
},
"dependencies": {
"lodash-es": "^4.17.21",
"yjs": "^13.6.21"
"yjs": "^13.6.27"
},
"devDependencies": {
"@blocksuite/affine": "workspace:*",
+1 -1
View File
@@ -28,7 +28,7 @@
"prompts": "^2.4.2",
"ts-node": "^10.9.2",
"typescript": "^5.8.3",
"yjs": "^13.6.24"
"yjs": "^13.6.27"
},
"engines": {
"node": ">= 10"
+12 -12
View File
@@ -36,7 +36,7 @@
"@radix-ui/react-toggle": "^1.1.1",
"@radix-ui/react-toggle-group": "^1.1.1",
"@radix-ui/react-tooltip": "^1.1.5",
"@sentry/react": "^9.2.0",
"@sentry/react": "^9.47.1",
"@tanstack/react-table": "^8.20.5",
"@toeverything/infra": "workspace:*",
"@toeverything/theme": "^1.1.16",
@@ -46,25 +46,25 @@
"lodash-es": "^4.17.21",
"lucide-react": "^0.508.0",
"next-themes": "^0.4.4",
"react": "^19.0.0",
"react": "^19.2.1",
"react-day-picker": "^9.4.3",
"react-dom": "^19.0.0",
"react-dom": "^19.2.1",
"react-hook-form": "^7.54.1",
"react-resizable-panels": "^3.0.0",
"react-router-dom": "^7.5.1",
"sonner": "^2.0.0",
"swr": "^2.2.5",
"vaul": "^1.1.1",
"react-resizable-panels": "^3.0.6",
"react-router-dom": "^7.10.1",
"sonner": "^2.0.7",
"swr": "^2.3.7",
"vaul": "^1.1.2",
"zod": "^3.25.76"
},
"devDependencies": {
"@types/lodash-es": "^4.17.12",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cross-env": "^7.0.3",
"shadcn-ui": "^0.9.4",
"tailwind-merge": "^3.0.0",
"tailwindcss": "^4.0.0",
"cross-env": "^10.1.0",
"shadcn-ui": "^0.9.5",
"tailwind-merge": "^3.4.0",
"tailwindcss": "^4.1.17",
"tailwindcss-animate": "^1.0.7"
},
"scripts": {
@@ -23,7 +23,8 @@ const badgeVariants = cva(
);
export interface BadgeProps
extends React.HTMLAttributes<HTMLDivElement>,
extends
React.HTMLAttributes<HTMLDivElement>,
VariantProps<typeof badgeVariants> {}
function Badge({ className, variant, ...props }: BadgeProps) {
@@ -33,7 +33,8 @@ const buttonVariants = cva(
);
export interface ButtonProps
extends React.ButtonHTMLAttributes<HTMLButtonElement>,
extends
React.ButtonHTMLAttributes<HTMLButtonElement>,
VariantProps<typeof buttonVariants> {
asChild?: boolean;
}
@@ -1,8 +1,7 @@
import { cn } from '@affine/admin/utils';
import * as React from 'react';
export interface InputProps
extends React.InputHTMLAttributes<HTMLInputElement> {}
export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {}
const Input = React.forwardRef<HTMLInputElement, InputProps>(
({ className, type, ...props }, ref) => {
@@ -47,7 +47,8 @@ const sheetVariants = cva(
);
interface SheetContentProps
extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,
extends
React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,
VariantProps<typeof sheetVariants> {}
const SheetContent = React.forwardRef<
@@ -1,8 +1,7 @@
import { cn } from '@affine/admin/utils';
import * as React from 'react';
export interface TextareaProps
extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}
export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}
const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
({ className, ...props }, ref) => {
@@ -2,8 +2,10 @@ import type { Column } from '@tanstack/react-table';
import { cn } from '../../../utils';
interface DataTableColumnHeaderProps<TData, TValue>
extends React.HTMLAttributes<HTMLDivElement> {
interface DataTableColumnHeaderProps<
TData,
TValue,
> extends React.HTMLAttributes<HTMLDivElement> {
column: Column<TData, TValue>;
title: string;
}
+5 -5
View File
@@ -24,20 +24,20 @@
"@capacitor/keyboard": "^7.0.0",
"@capacitor/status-bar": "^7.0.0",
"@capgo/inappbrowser": "^7.1.0",
"@sentry/react": "^9.2.0",
"@sentry/react": "^9.47.1",
"@toeverything/infra": "workspace:*",
"async-call-rpc": "^6.4.2",
"idb": "^8.0.0",
"next-themes": "^0.4.4",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-router-dom": "^6.28.0"
"react": "^19.2.1",
"react-dom": "^19.2.1",
"react-router-dom": "^6.30.2"
},
"devDependencies": {
"@capacitor/cli": "^7.0.0",
"@types/react": "^19.0.1",
"@types/react-dom": "^19.0.2",
"cross-env": "^7.0.3",
"cross-env": "^10.1.0",
"typescript": "^5.7.2"
}
}
@@ -17,23 +17,23 @@
"@affine/track": "workspace:*",
"@blocksuite/affine": "workspace:*",
"@emotion/react": "^11.14.0",
"@sentry/react": "^9.2.0",
"@sentry/react": "^9.47.1",
"@toeverything/infra": "workspace:*",
"@toeverything/theme": "^1.1.16",
"@vanilla-extract/css": "^1.17.0",
"async-call-rpc": "^6.4.2",
"next-themes": "^0.4.4",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-router-dom": "^6.28.0",
"uuid": "^11.0.3",
"react": "^19.2.1",
"react-dom": "^19.2.1",
"react-router-dom": "^6.30.2",
"uuid": "^11.1.0",
"webm-muxer": "^5.0.3"
},
"devDependencies": {
"@affine-tools/utils": "workspace:*",
"@types/react": "^19.0.1",
"@types/react-dom": "^19.0.2",
"cross-env": "^7.0.3",
"cross-env": "^10.1.0",
"typescript": "^5.7.2"
}
}
+8 -8
View File
@@ -50,14 +50,14 @@
"@pengx17/electron-forge-maker-appimage": "^1.2.1",
"@sentry/electron": "^7.0.0",
"@sentry/esbuild-plugin": "^3.0.0",
"@sentry/react": "^9.2.0",
"@sentry/react": "^9.47.1",
"@toeverything/infra": "workspace:*",
"@types/set-cookie-parser": "^2.4.10",
"@types/uuid": "^10.0.0",
"@vitejs/plugin-react-swc": "^3.7.2",
"app-builder-lib": "^26.1.0",
"builder-util-runtime": "^9.5.0",
"cross-env": "^7.0.3",
"cross-env": "^10.1.0",
"debug": "^4.4.0",
"electron": "^36.0.0",
"electron-log": "^5.4.3",
@@ -67,13 +67,13 @@
"fs-extra": "^11.2.0",
"glob": "^11.0.0",
"lodash-es": "^4.17.21",
"msw": "^2.6.8",
"nanoid": "^5.0.9",
"rxjs": "^7.8.1",
"semver": "^7.6.3",
"msw": "^2.12.4",
"nanoid": "^5.1.6",
"rxjs": "^7.8.2",
"semver": "^7.7.3",
"tree-kill": "^1.2.2",
"ts-node": "^10.9.2",
"uuid": "^11.0.3",
"uuid": "^11.1.0",
"vitest": "^3.2.4",
"zod": "^3.25.76"
},
@@ -83,7 +83,7 @@
"link-preview-js": "^3.1.0",
"next-themes": "^0.4.4",
"set-cookie-parser": "^2.7.1",
"yjs": "^13.6.21"
"yjs": "^13.6.27"
},
"build": {
"protocols": [
@@ -34,9 +34,8 @@ afterAll(() => {
describe('workspace db management', () => {
test('trash workspace', async () => {
const { trashWorkspace } = await import(
'@affine/electron/helper/workspace/handlers'
);
const { trashWorkspace } =
await import('@affine/electron/helper/workspace/handlers');
const workspaceId = v4();
const workspacePath = path.join(
appDataPath,
@@ -58,9 +57,8 @@ describe('workspace db management', () => {
});
test('delete workspace', async () => {
const { deleteWorkspace } = await import(
'@affine/electron/helper/workspace/handlers'
);
const { deleteWorkspace } =
await import('@affine/electron/helper/workspace/handlers');
const workspaceId = v4();
const workspacePath = path.join(
appDataPath,
+6 -6
View File
@@ -28,16 +28,16 @@
"@capacitor/haptics": "^7.0.0",
"@capacitor/ios": "^7.0.0",
"@capacitor/keyboard": "^7.0.0",
"@sentry/react": "^9.2.0",
"@sentry/react": "^9.47.1",
"@toeverything/infra": "workspace:^",
"async-call-rpc": "^6.4.2",
"capacitor-plugin-app-tracking-transparency": "^2.0.5",
"idb": "^8.0.0",
"next-themes": "^0.4.4",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-router-dom": "^6.28.0",
"yjs": "^13.6.21"
"react": "^19.2.1",
"react-dom": "^19.2.1",
"react-router-dom": "^6.30.2",
"yjs": "^13.6.27"
},
"devDependencies": {
"@affine-tools/cli": "workspace:*",
@@ -46,7 +46,7 @@
"@capacitor/cli": "^7.0.0",
"@types/react": "^19.0.1",
"@types/react-dom": "^19.0.2",
"cross-env": "^7.0.3",
"cross-env": "^10.1.0",
"typescript": "^5.7.2"
}
}
+5 -5
View File
@@ -16,16 +16,16 @@
"@affine/nbstore": "workspace:*",
"@blocksuite/affine": "workspace:*",
"@blocksuite/icons": "^2.2.17",
"@sentry/react": "^9.2.0",
"@sentry/react": "^9.47.1",
"@toeverything/infra": "workspace:*",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-router-dom": "^6.28.0"
"react": "^19.2.1",
"react-dom": "^19.2.1",
"react-router-dom": "^6.30.2"
},
"devDependencies": {
"@types/react": "^19.0.1",
"@types/react-dom": "^19.0.2",
"cross-env": "^7.0.3",
"cross-env": "^10.1.0",
"typescript": "^5.7.2"
}
}
+5 -5
View File
@@ -16,16 +16,16 @@
"@affine/nbstore": "workspace:*",
"@affine/track": "workspace:*",
"@emotion/react": "^11.14.0",
"@sentry/react": "^9.2.0",
"@sentry/react": "^9.47.1",
"@toeverything/infra": "workspace:*",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"react-router-dom": "^6.28.0"
"react": "^19.2.1",
"react-dom": "^19.2.1",
"react-router-dom": "^6.30.2"
},
"devDependencies": {
"@types/react": "^19.0.1",
"@types/react-dom": "^19.0.2",
"cross-env": "^7.0.3",
"cross-env": "^10.1.0",
"typescript": "^5.7.2"
}
}
+15 -15
View File
@@ -16,8 +16,8 @@
"peerDependencies": {
"@blocksuite/affine": "*",
"@swc/core": "^1.0.0",
"react": "^19.0.0",
"react-dom": "^19.0.0"
"react": "^19.2.1",
"react-dom": "^19.2.1"
},
"dependencies": {
"@affine/debug": "workspace:*",
@@ -25,8 +25,8 @@
"@affine/error": "workspace:*",
"@affine/graphql": "workspace:*",
"@affine/i18n": "workspace:*",
"@atlaskit/pragmatic-drag-and-drop": "^1.4.0",
"@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.0.3",
"@atlaskit/pragmatic-drag-and-drop": "^1.7.7",
"@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.1.0",
"@blocksuite/icons": "^2.2.17",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.0",
@@ -53,21 +53,21 @@
"dayjs": "^1.11.13",
"emoji-mart": "^5.6.0",
"emojibase-data": "^16.0.3",
"foxact": "^0.2.45",
"foxact": "^0.2.49",
"jotai": "^2.10.3",
"lit": "^3.2.1",
"lodash-es": "^4.17.21",
"lottie-react": "^2.4.0",
"lottie-web": "^5.12.2",
"nanoid": "^5.0.9",
"nanoid": "^5.1.6",
"next-themes": "^0.4.4",
"react": "19.1.0",
"react-dom": "19.1.0",
"react-paginate": "^8.2.0",
"react-router-dom": "^6.28.0",
"react": "^19.2.1",
"react-dom": "19.2.1",
"react-paginate": "^8.3.0",
"react-router-dom": "^6.30.2",
"react-transition-state": "^2.2.0",
"sonner": "^2.0.0",
"swr": "^2.2.5",
"sonner": "^2.0.7",
"swr": "^2.3.7",
"zod": "^3.25.76"
},
"devDependencies": {
@@ -82,10 +82,10 @@
"@types/react": "^19.0.1",
"@types/react-dom": "^19.0.2",
"@vanilla-extract/css": "^1.17.0",
"storybook": "^10.0.0",
"storybook": "^10.1.5",
"typescript": "^5.7.2",
"unplugin-swc": "^1.5.1",
"vite": "^7.0.0",
"unplugin-swc": "^1.5.9",
"vite": "^7.2.7",
"vitest": "^3.2.4"
},
"version": "0.25.7"
@@ -7,8 +7,7 @@ import { useDropTarget } from '../../ui/dnd';
import { Tooltip, type TooltipProps } from '../../ui/tooltip';
import * as styles from './resize-panel.css';
export interface ResizeHandleProps
extends React.HtmlHTMLAttributes<HTMLDivElement> {
export interface ResizeHandleProps extends React.HtmlHTMLAttributes<HTMLDivElement> {
resizing: boolean;
open: boolean;
minWidth: number;
@@ -27,8 +26,7 @@ export interface ResizeHandleProps
dropTargetOptions?: Parameters<typeof useDropTarget>[0];
}
export interface ResizePanelProps
extends React.HtmlHTMLAttributes<HTMLDivElement> {
export interface ResizePanelProps extends React.HtmlHTMLAttributes<HTMLDivElement> {
resizing: boolean;
open: boolean;
floating?: boolean;
@@ -2,8 +2,10 @@ import type { HTMLAttributes, ReactNode } from 'react';
import { settingHeader, settingHeaderBeta } from './share.css';
interface SettingHeaderProps
extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
interface SettingHeaderProps extends Omit<
HTMLAttributes<HTMLDivElement>,
'title'
> {
title: ReactNode;
subtitle?: ReactNode;
beta?: boolean;
@@ -22,8 +22,10 @@ export type ButtonType =
| 'custom';
export type ButtonSize = 'default' | 'large' | 'extraLarge' | 'custom';
export interface ButtonProps
extends Omit<HTMLAttributes<HTMLButtonElement>, 'type' | 'prefix'> {
export interface ButtonProps extends Omit<
HTMLAttributes<HTMLButtonElement>,
'type' | 'prefix'
> {
/**
* Preset color scheme
* @default 'secondary'
@@ -10,20 +10,19 @@ import {
import { Button, type ButtonProps } from './button';
import { iconButton, iconSizeVar } from './button.css';
export interface IconButtonProps
extends Omit<
ButtonProps,
| 'variant'
| 'size'
| 'prefix'
| 'suffix'
| 'children'
| 'prefixClassName'
| 'prefixStyle'
| 'suffix'
| 'suffixClassName'
| 'suffixStyle'
> {
export interface IconButtonProps extends Omit<
ButtonProps,
| 'variant'
| 'size'
| 'prefix'
| 'suffix'
| 'children'
| 'prefixClassName'
| 'prefixStyle'
| 'suffix'
| 'suffixClassName'
| 'suffixStyle'
> {
/** Icon element */
children?: ReactElement<SVGAttributes<SVGElement>>;
/** Same as `children`, compatibility of the old API */
@@ -108,7 +108,8 @@ export const defaultDatePickerProps = {
export type DefaultDatePickerProps = typeof defaultDatePickerProps;
export interface DatePickerModePanelProps
extends DefaultDatePickerProps,
extends
DefaultDatePickerProps,
Omit<DatePickerProps, keyof DefaultDatePickerProps> {
cursor: dayjs.Dayjs;
onCursorChange?: (cursor: dayjs.Dayjs) => void;
@@ -22,8 +22,10 @@ export interface WeekDatePickerHandle {
setCursor?: (cursor: dayjs.Dayjs) => void;
}
export interface WeekDatePickerProps
extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
export interface WeekDatePickerProps extends Omit<
HTMLAttributes<HTMLDivElement>,
'onChange'
> {
value?: string;
onChange?: (value: string) => void;
handleRef?: ForwardedRef<WeekDatePickerHandle>;
@@ -22,8 +22,10 @@ export interface InlineEditHandle {
triggerEdit: () => void;
}
export interface InlineEditProps
extends Omit<HTMLAttributes<HTMLSpanElement>, 'onChange' | 'onInput'> {
export interface InlineEditProps extends Omit<
HTMLAttributes<HTMLSpanElement>,
'onChange' | 'onInput'
> {
/**
* Content to be displayed
*/
@@ -220,8 +222,7 @@ export const InlineEdit = ({
};
interface PlaceholderProps
extends PropsWithChildren,
HTMLAttributes<HTMLSpanElement> {
extends PropsWithChildren, HTMLAttributes<HTMLSpanElement> {
label?: string;
}
const Placeholder = ({
@@ -25,8 +25,7 @@ export interface IconAndNameEditorContentProps extends IconEditorProps {
}
export interface IconAndNameEditorMenuProps
extends Omit<MenuProps, 'items'>,
IconAndNameEditorContentProps {
extends Omit<MenuProps, 'items'>, IconAndNameEditorContentProps {
open?: boolean;
onOpenChange?: (open: boolean) => void;
@@ -24,8 +24,10 @@ export interface MenuProps {
ref?: React.Ref<MenuRef>;
}
export interface MenuItemProps
extends Omit<MenuItemPropsPrimitive, 'asChild' | 'textValue' | 'prefix'> {
export interface MenuItemProps extends Omit<
MenuItemPropsPrimitive,
'asChild' | 'textValue' | 'prefix'
> {
type?: 'default' | 'warning' | 'danger';
prefix?: ReactNode;
suffix?: ReactNode;
@@ -5,8 +5,7 @@ import { useEffect, useRef } from 'react';
import * as styles from './styles.css';
export interface ResizePanelProps
extends PropsWithChildren,
HTMLAttributes<HTMLDivElement> {
extends PropsWithChildren, HTMLAttributes<HTMLDivElement> {
horizontal?: boolean;
vertical?: boolean;
width?: number;
@@ -4,8 +4,7 @@ import type { HTMLAttributes, PropsWithChildren } from 'react';
* @reference These props are migrated from [MUI Skeleton props](https://mui.com/material-ui/api/skeleton/#props)
*/
export interface SkeletonProps
extends PropsWithChildren,
HTMLAttributes<HTMLElement> {
extends PropsWithChildren, HTMLAttributes<HTMLElement> {
/**
* The animation. If `false` the animation effect is disabled.
*/
@@ -1,8 +1,10 @@
import { useTheme } from 'next-themes';
import { forwardRef, type HTMLAttributes } from 'react';
export interface ThemedImgProps
extends Omit<HTMLAttributes<HTMLImageElement>, 'src'> {
export interface ThemedImgProps extends Omit<
HTMLAttributes<HTMLImageElement>,
'src'
> {
lightSrc: string;
darkSrc?: string;
}
+18 -18
View File
@@ -42,7 +42,7 @@
"@radix-ui/react-scroll-area": "^1.2.2",
"@radix-ui/react-slot": "^1.1.1",
"@radix-ui/react-toolbar": "^1.1.1",
"@sentry/react": "^9.2.0",
"@sentry/react": "^9.47.1",
"@toeverything/infra": "workspace:*",
"@toeverything/pdf-viewer": "^0.1.1",
"@toeverything/theme": "^1.1.16",
@@ -57,43 +57,43 @@
"eventemitter2": "^6.4.9",
"file-type": "^21.0.0",
"filesize": "^10.1.6",
"foxact": "^0.2.43",
"foxact": "^0.2.49",
"fuse.js": "^7.0.0",
"graphemer": "^1.4.0",
"graphql": "^16.9.0",
"history": "^5.3.0",
"ical.js": "^2.1.0",
"idb": "^8.0.0",
"idb-keyval": "^6.2.1",
"idb-keyval": "^6.2.2",
"image-blob-reduce": "^4.1.0",
"is-svg": "^6.0.0",
"is-svg": "^6.1.0",
"jotai": "^2.10.3",
"jotai-scope": "^0.7.2",
"katex": "^0.16.11",
"lib0": "^0.2.99",
"katex": "^0.16.27",
"lib0": "^0.2.114",
"lit": "^3.2.1",
"lodash-es": "^4.17.21",
"lottie-react": "^2.4.0",
"mermaid": "^11.1.0",
"mp4-muxer": "^5.2.1",
"nanoid": "^5.0.9",
"mermaid": "^11.12.2",
"mp4-muxer": "^5.2.2",
"nanoid": "^5.1.6",
"next-themes": "^0.4.4",
"query-string": "^9.1.1",
"react": "19.1.0",
"react-dom": "19.1.0",
"react": "^19.2.1",
"react-dom": "^19.2.1",
"react-error-boundary": "^6.0.0",
"react-router-dom": "^6.28.0",
"react-router-dom": "^6.30.2",
"react-transition-state": "^2.2.0",
"react-virtuoso": "^4.12.3",
"rxjs": "^7.8.1",
"semver": "^7.7.2",
"ses": "^1.10.0",
"shiki": "^3.7.0",
"rxjs": "^7.8.2",
"semver": "^7.7.3",
"ses": "^1.14.0",
"shiki": "^3.19.0",
"socket.io-client": "^4.8.1",
"swr": "2.3.3",
"swr": "^2.3.7",
"tinykeys": "patch:tinykeys@npm%3A2.1.0#~/.yarn/patches/tinykeys-npm-2.1.0-819feeaed0.patch",
"y-protocols": "^1.0.6",
"yjs": "^13.6.21",
"yjs": "^13.6.27",
"zod": "^3.25.76"
},
"devDependencies": {
@@ -65,9 +65,8 @@ export const usePageHelper = (docCollection: Workspace) => {
const importFileAndOpen = useMemo(
() => async () => {
const { showImportModal } = await import(
'@blocksuite/affine/widgets/linked-doc'
);
const { showImportModal } =
await import('@blocksuite/affine/widgets/linked-doc');
const { promise, resolve, reject } =
Promise.withResolvers<
Parameters<
@@ -1,7 +1,9 @@
import type { HTMLAttributes, ReactNode } from 'react';
export interface EmptyLayoutProps
extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
export interface EmptyLayoutProps extends Omit<
HTMLAttributes<HTMLDivElement>,
'title'
> {
illustrationLight: string;
illustrationDark?: string;
illustrationWidth?: number | string;
@@ -4,8 +4,10 @@ import type { HTMLAttributes } from 'react';
import { MemberItem } from './item';
import * as styles from './styles.css';
interface InlineMemberListProps
extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
interface InlineMemberListProps extends Omit<
HTMLAttributes<HTMLDivElement>,
'onChange'
> {
members: string[];
focusedIndex?: number;
onRemove?: (id: string) => void;
@@ -108,8 +108,10 @@ export const ConfigRow = forwardRef<HTMLDivElement, HTMLProps<HTMLDivElement>>(
}
);
export interface SettingGroupProps
extends Omit<HTMLProps<HTMLDivElement>, 'title'> {
export interface SettingGroupProps extends Omit<
HTMLProps<HTMLDivElement>,
'title'
> {
title?: ReactNode;
contentClassName?: string;
contentStyle?: CSSProperties;
@@ -4,8 +4,10 @@ import * as styles from './inline-tag-list.css';
import { TagItem } from './tag';
import type { TagLike } from './types';
interface InlineTagListProps
extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
interface InlineTagListProps extends Omit<
HTMLAttributes<HTMLDivElement>,
'onChange'
> {
onRemoved?: (id: string) => void;
tags: TagLike[];
tagMode: 'inline-tag' | 'db-label';
@@ -13,8 +13,7 @@ import {
import * as styles from './empty-section.css';
interface NavigationPanelEmptySectionProps
extends HTMLAttributes<HTMLDivElement> {
interface NavigationPanelEmptySectionProps extends HTMLAttributes<HTMLDivElement> {
icon:
| ((props: SVGProps<SVGSVGElement>) => JSX.Element)
| ReactElement<SVGAttributes<SVGElement>>;
@@ -90,8 +90,7 @@ type ExplorerIconConfig = {
where: ExplorerType;
id: string;
};
interface WebNavigationPanelTreeNodeProps
extends BaseNavigationPanelTreeNodeProps {
interface WebNavigationPanelTreeNodeProps extends BaseNavigationPanelTreeNodeProps {
renameable?: boolean;
onRename?: (newName: string) => void;
renameableGuard?: { docId: string; action: DocPermissionActions };
@@ -20,8 +20,10 @@ import {
import * as styles from './server-selector.css';
export interface ServerSelectorProps
extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
export interface ServerSelectorProps extends Omit<
HTMLAttributes<HTMLDivElement>,
'onChange'
> {
selectedId: Server['id'];
onChange: (id: Server['id']) => void;
placeholder?: ReactNode;
@@ -30,8 +30,10 @@ export const SeeAllLink = () => {
);
};
interface PricingCollapsibleProps
extends Omit<HtmlHTMLAttributes<HTMLDivElement>, 'title'> {
interface PricingCollapsibleProps extends Omit<
HtmlHTMLAttributes<HTMLDivElement>,
'title'
> {
title?: ReactNode;
caption?: ReactNode;
}
@@ -34,8 +34,7 @@ export const IntegrationSettingHeader = ({
};
// universal
export interface IntegrationSettingItemProps
extends HTMLAttributes<HTMLDivElement> {
export interface IntegrationSettingItemProps extends HTMLAttributes<HTMLDivElement> {
name?: ReactNode;
desc?: ReactNode;
}
@@ -49,8 +49,10 @@ const CountDisplay = ({
}: { count: number; max?: number } & HTMLAttributes<HTMLSpanElement>) => {
return <span {...attrs}>{count > max ? `${max}+` : count}</span>;
};
interface PageItemProps
extends Omit<HTMLAttributes<HTMLAnchorElement>, 'onClick'> {
interface PageItemProps extends Omit<
HTMLAttributes<HTMLAnchorElement>,
'onClick'
> {
docId: string;
right?: ReactNode;
duplicate?: boolean;
@@ -321,8 +323,7 @@ const JournalDailyCountBlock = ({ date }: JournalBlockProps) => {
const MAX_CONFLICT_COUNT = 5;
interface ConflictListProps
extends PropsWithChildren,
HTMLAttributes<HTMLDivElement> {
extends PropsWithChildren, HTMLAttributes<HTMLDivElement> {
docRecords: DocRecord[];
}
const ConflictList = ({
@@ -7,8 +7,7 @@ import { type HTMLAttributes, useContext } from 'react';
import { levelIndent } from '../tree/node.css';
import * as styles from './add-item-placeholder.css';
export interface AddItemPlaceholderProps
extends HTMLAttributes<HTMLDivElement> {
export interface AddItemPlaceholderProps extends HTMLAttributes<HTMLDivElement> {
onClick?: () => void;
label?: string;
icon?: React.ReactNode;
@@ -28,8 +28,7 @@ interface CollapsibleSectionProps extends HTMLAttributes<HTMLDivElement> {
contentClassName?: string;
}
interface CollapsibleSectionTriggerProps
extends HTMLAttributes<HTMLDivElement> {
interface CollapsibleSectionTriggerProps extends HTMLAttributes<HTMLDivElement> {
label: string;
collapsed?: boolean;
actions?: ReactNode;
@@ -20,8 +20,7 @@ import {
import { SwipeMenu } from '../../swipe-menu';
import * as styles from './node.css';
interface NavigationPanelTreeNodeProps
extends BaseNavigationPanelTreeNodeProps {}
interface NavigationPanelTreeNodeProps extends BaseNavigationPanelTreeNodeProps {}
export const NavigationPanelTreeNode = ({
children,
@@ -11,8 +11,10 @@ import { forwardRef } from 'react';
import { NavigationBackButton } from '../navigation-back';
import * as styles from './styles.css';
export interface PageHeaderProps
extends Omit<HtmlHTMLAttributes<HTMLHeadElement>, 'prefix'> {
export interface PageHeaderProps extends Omit<
HtmlHTMLAttributes<HTMLHeadElement>,
'prefix'
> {
/**
* whether to show back button
*/
@@ -19,8 +19,7 @@ export interface RenameContentProps extends RenameBaseProps {
inputBelowRenderer?: (props: { input: string }) => ReactNode;
}
export interface RenameSubMenuProps
extends PropsWithChildren<RenameContentProps> {
export interface RenameSubMenuProps extends PropsWithChildren<RenameContentProps> {
/** Submenu's title */
title?: string;
/** MenuItem.icon */
@@ -31,8 +30,7 @@ export interface RenameSubMenuProps
disabled?: boolean;
}
export interface RenameDialogProps
extends PropsWithChildren<RenameContentProps> {
export interface RenameDialogProps extends PropsWithChildren<RenameContentProps> {
open?: boolean;
onOpenChange?: (open: boolean) => void;
title?: string;
@@ -16,8 +16,10 @@ import {
import * as styles from './style.css';
export interface SearchInputProps
extends Omit<HTMLProps<HTMLInputElement>, 'onInput'> {
export interface SearchInputProps extends Omit<
HTMLProps<HTMLInputElement>,
'onInput'
> {
value?: string;
height?: number;
cornerRadius?: number;
@@ -10,8 +10,7 @@ import { forwardRef, type HTMLAttributes } from 'react';
import { card, dropdownIcon, label } from './card.css';
export interface CurrentWorkspaceCardProps
extends HTMLAttributes<HTMLDivElement> {}
export interface CurrentWorkspaceCardProps extends HTMLAttributes<HTMLDivElement> {}
export const CurrentWorkspaceCard = forwardRef<
HTMLDivElement,
@@ -9,8 +9,10 @@ import {
import * as styles from './group.css';
export interface SettingGroupProps
extends Omit<HTMLProps<HTMLDivElement>, 'title'> {
export interface SettingGroupProps extends Omit<
HTMLProps<HTMLDivElement>,
'title'
> {
title?: ReactNode;
contentClassName?: string;
contentStyle?: CSSProperties;
@@ -3,8 +3,10 @@ import { type HTMLAttributes, useCallback, useEffect, useState } from 'react';
import { JournalDatePickerContext } from './context';
import { ResizeViewport } from './viewport';
export interface JournalDatePickerProps
extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
export interface JournalDatePickerProps extends Omit<
HTMLAttributes<HTMLDivElement>,
'onChange'
> {
date: string;
onChange: (date: string) => void;
withDotDates: Set<string | null | undefined>;
@@ -3,26 +3,22 @@
## How Cross-Tab Audio Synchronization Works
1. **Global State**:
- Shared between all tabs via Electron's global state or browser storage
- Contains `PlaybackState` and `MediaStats` objects
- Each state update includes a timestamp (`updateTime`) to track recency
2. **Tab 1 - Playing Audio**:
- User initiates playback in Tab 1
- `AudioMediaManagerService` updates global state with new playback info
- Global state includes the tab ID that initiated playback
3. **Tab 2 - Responding to Changes**:
- Observes changes to global state via `observeGlobalPlaybackState`
- Detects that audio is playing in another tab (different tabId)
- Automatically stops any playing audio in Tab 2
- Does not attempt to play the audio from Tab 1
4. **State Synchronization**:
- All state changes include `updateTime` to prevent race conditions
- `distinctUntilChanged` ensures only meaningful state changes trigger updates
- `skipUpdate` parameter prevents circular update loops
@@ -117,8 +117,7 @@ export const TemplateListMenuContentScrollable = (
};
interface TemplateListMenuProps
extends TemplateListMenuContentProps,
Omit<MenuProps, 'items'> {}
extends TemplateListMenuContentProps, Omit<MenuProps, 'items'> {}
export const TemplateListMenu = ({
children,
onSelect,
@@ -8,8 +8,7 @@ import { forwardRef, memo, useCallback, useMemo, useState } from 'react';
import type { View } from '../../entities/view';
import * as styles from './indicator.css';
export interface SplitViewDragHandleProps
extends HTMLAttributes<HTMLDivElement> {
export interface SplitViewDragHandleProps extends HTMLAttributes<HTMLDivElement> {
active?: boolean;
dragging?: boolean;
open?: boolean;
@@ -32,8 +32,9 @@ import {
} from './state';
import { allowedSplitViewEntityTypes } from './types';
export interface SplitViewPanelProps
extends PropsWithChildren<HTMLAttributes<HTMLDivElement>> {
export interface SplitViewPanelProps extends PropsWithChildren<
HTMLAttributes<HTMLDivElement>
> {
view: View;
index: number;
resizeHandle?: React.ReactNode;
+2 -3
View File
@@ -22,9 +22,8 @@
"@magic-works/i18n-codegen": "^0.6.1",
"dayjs": "^1.11.13",
"i18next": "^25.0.0",
"react": "^19.0.0",
"react-i18next": "^15.2.0",
"undici": "^7.1.0"
"react": "^19.2.1",
"react-i18next": "^15.2.0"
},
"devDependencies": {
"@affine-tools/cli": "workspace:*",
@@ -22,16 +22,16 @@
"express-rate-limit": "^7.1.5",
"fs-extra": "^11.3.0",
"lodash-es": "^4.17.21",
"multer": "^2.0.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"multer": "^2.0.2",
"react": "^19.2.1",
"react-dom": "^19.2.1",
"react-markdown": "^10.1.0",
"socket.io": "^4.7.4",
"socket.io-client": "^4.7.4",
"swr": "^2.3.2",
"tailwindcss": "^4.0.6",
"swr": "^2.3.7",
"tailwindcss": "^4.1.17",
"tsx": "^4.19.2",
"vite": "^7.0.0"
"vite": "^7.2.7"
},
"devDependencies": {
"@types/fs-extra": "^11",
+1 -1
View File
@@ -29,7 +29,7 @@
"@napi-rs/whisper": "^0.0.4",
"@types/node": "^22.0.0",
"ava": "^6.4.1",
"rxjs": "^7.8.1",
"rxjs": "^7.8.2",
"ts-node": "^10.9.2",
"typescript": "^5.7.2"
},
+2 -2
View File
@@ -12,12 +12,12 @@
"devDependencies": {
"@affine-tools/cli": "workspace:*",
"@affine-tools/utils": "workspace:*",
"path-to-regexp": "^8.2.0",
"path-to-regexp": "^8.3.0",
"query-string": "^9.1.1",
"vitest": "^3.2.4"
},
"peerDependencies": {
"react": "^19.1.0",
"react": "^19.2.1",
"react-router-dom": "^7.5.1"
}
}
+2 -2
View File
@@ -8,9 +8,9 @@
},
"dependencies": {
"@affine/debug": "workspace:*",
"@sentry/react": "^9.2.0",
"@sentry/react": "^9.47.1",
"mixpanel-browser": "^2.56.0",
"react-router-dom": "6.30.0"
"react-router-dom": "^6.30.2"
},
"devDependencies": {
"@types/mixpanel-browser": "^2.50.2",
+6 -7
View File
@@ -93,13 +93,12 @@ type FolderEvents =
type TagEvents = 'createTag' | 'deleteTag' | 'renameTag' | 'tagDoc';
type FavoriteEvents = 'toggleFavorite';
type OrganizeItemEvents = // doc, link, folder, collection, tag
| 'createOrganizeItem'
| 'renameOrganizeItem'
| 'moveOrganizeItem'
| 'deleteOrganizeItem'
| 'orderOrganizeItem'
| 'removeOrganizeItem';
| 'createOrganizeItem'
| 'renameOrganizeItem'
| 'moveOrganizeItem'
| 'deleteOrganizeItem'
| 'orderOrganizeItem'
| 'removeOrganizeItem';
type OrganizeEvents =
| OrganizeItemEvents
| CollectionEvents
+1 -2
View File
@@ -50,8 +50,7 @@ type IsFourLevelsDeep<
: false;
// for type checking
export const _assertIsAllEventsDefinedInFourLevels: IsFourLevelsDeep<Events> =
true;
export const _assertIsAllEventsDefinedInFourLevels: IsFourLevelsDeep<Events> = true;
export interface EventProps {
// location