mirror of
https://github.com/hcengineering/platform.git
synced 2026-10-01 22:15:04 +02:00
Allow guest to update its identities
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
This commit is contained in:
Generated
+42
-42
@@ -22,8 +22,8 @@ importers:
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/platform':
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
@@ -92,8 +92,8 @@ importers:
|
||||
../../packages/collaboration:
|
||||
dependencies:
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/server-core':
|
||||
specifier: workspace:^0.7.16
|
||||
version: link:../core
|
||||
@@ -162,8 +162,8 @@ importers:
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/platform':
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
@@ -238,8 +238,8 @@ importers:
|
||||
../../packages/datalake:
|
||||
dependencies:
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/platform':
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
@@ -308,8 +308,8 @@ importers:
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/platform':
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
@@ -366,8 +366,8 @@ importers:
|
||||
../../packages/hulylake:
|
||||
dependencies:
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/hulylake-client':
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
@@ -433,8 +433,8 @@ importers:
|
||||
../../packages/kafka:
|
||||
dependencies:
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/platform':
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
@@ -500,8 +500,8 @@ importers:
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/platform':
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
@@ -564,8 +564,8 @@ importers:
|
||||
../../packages/minio:
|
||||
dependencies:
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/platform':
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
@@ -625,8 +625,8 @@ importers:
|
||||
../../packages/mongo:
|
||||
dependencies:
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/platform':
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
@@ -689,8 +689,8 @@ importers:
|
||||
../../packages/postgres:
|
||||
dependencies:
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/platform':
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
@@ -762,8 +762,8 @@ importers:
|
||||
specifier: ^3.738.0
|
||||
version: 3.917.0
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/platform':
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
@@ -832,8 +832,8 @@ importers:
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/platform':
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
@@ -905,8 +905,8 @@ importers:
|
||||
specifier: ^0.7.17
|
||||
version: 0.7.17
|
||||
'@hcengineering/core':
|
||||
specifier: ^0.7.19
|
||||
version: 0.7.19
|
||||
specifier: ^0.7.21
|
||||
version: 0.7.21
|
||||
'@hcengineering/datalake':
|
||||
specifier: workspace:^0.7.15
|
||||
version: link:../datalake
|
||||
@@ -1575,8 +1575,8 @@ packages:
|
||||
'@hcengineering/client@0.7.17':
|
||||
resolution: {integrity: sha512-3SjW0e/pPa/qQNqpGuh6A+Y5XN0WQ2EMgUZaXjY2Xmchpna7Xp6hYDvzSL4yPA4tZSGE8n0gu7FK8LRamMdrUg==}
|
||||
|
||||
'@hcengineering/core@0.7.19':
|
||||
resolution: {integrity: sha512-BMkVkVXMU8qmbR2KAeMZ3YIMfa07/AzdCEY7PNn7dfAZyc63vrLz+Jl0CPvN7cq9p6x/WBkMfS+eKFwtvhZIUA==}
|
||||
'@hcengineering/core@0.7.21':
|
||||
resolution: {integrity: sha512-iZejKdlMgBTiTZnOG83uGBx0QtpY1y1gEjzcoSNirSeBW5urATOtbrqIgFH9eltMk3kJBYLV2sVW0fI/AMf8Wg==}
|
||||
|
||||
'@hcengineering/hulylake-client@0.7.17':
|
||||
resolution: {integrity: sha512-TPqdc5nd7xV73Y1B2EJ7GxpWazp9ACV1AqHlm6ebYwU1CzXQvbuJxF68itbHmPiNiCmmuiDruJmjnyLGwL18Kw==}
|
||||
@@ -5436,7 +5436,7 @@ snapshots:
|
||||
|
||||
'@hcengineering/account-client@0.7.18':
|
||||
dependencies:
|
||||
'@hcengineering/core': 0.7.19
|
||||
'@hcengineering/core': 0.7.21
|
||||
'@hcengineering/platform': 0.7.17
|
||||
|
||||
'@hcengineering/analytics@0.7.17':
|
||||
@@ -5447,17 +5447,17 @@ snapshots:
|
||||
dependencies:
|
||||
'@hcengineering/analytics': 0.7.17
|
||||
'@hcengineering/client': 0.7.17
|
||||
'@hcengineering/core': 0.7.19
|
||||
'@hcengineering/core': 0.7.21
|
||||
'@hcengineering/platform': 0.7.17
|
||||
'@hcengineering/rpc': 0.7.17
|
||||
snappyjs: 0.7.0
|
||||
|
||||
'@hcengineering/client@0.7.17':
|
||||
dependencies:
|
||||
'@hcengineering/core': 0.7.19
|
||||
'@hcengineering/core': 0.7.21
|
||||
'@hcengineering/platform': 0.7.17
|
||||
|
||||
'@hcengineering/core@0.7.19':
|
||||
'@hcengineering/core@0.7.21':
|
||||
dependencies:
|
||||
'@hcengineering/analytics': 0.7.17
|
||||
'@hcengineering/measurements': 0.7.18
|
||||
@@ -5466,7 +5466,7 @@ snapshots:
|
||||
|
||||
'@hcengineering/hulylake-client@0.7.17':
|
||||
dependencies:
|
||||
'@hcengineering/core': 0.7.19
|
||||
'@hcengineering/core': 0.7.21
|
||||
'@hcengineering/retry': 0.7.17
|
||||
|
||||
'@hcengineering/measurements@0.7.18': {}
|
||||
@@ -5515,7 +5515,7 @@ snapshots:
|
||||
'@hcengineering/query@0.7.17':
|
||||
dependencies:
|
||||
'@hcengineering/analytics': 0.7.17
|
||||
'@hcengineering/core': 0.7.19
|
||||
'@hcengineering/core': 0.7.21
|
||||
'@hcengineering/platform': 0.7.17
|
||||
fast-equals: 5.3.2
|
||||
|
||||
@@ -5523,32 +5523,32 @@ snapshots:
|
||||
|
||||
'@hcengineering/rpc@0.7.17':
|
||||
dependencies:
|
||||
'@hcengineering/core': 0.7.19
|
||||
'@hcengineering/core': 0.7.21
|
||||
'@hcengineering/platform': 0.7.17
|
||||
msgpackr: 1.11.5
|
||||
|
||||
'@hcengineering/server-token@0.7.17':
|
||||
dependencies:
|
||||
'@hcengineering/core': 0.7.19
|
||||
'@hcengineering/core': 0.7.21
|
||||
'@hcengineering/platform': 0.7.17
|
||||
jwt-simple: 0.5.6
|
||||
uuid: 8.3.2
|
||||
|
||||
'@hcengineering/storage@0.7.17':
|
||||
dependencies:
|
||||
'@hcengineering/core': 0.7.19
|
||||
'@hcengineering/core': 0.7.21
|
||||
'@hcengineering/platform': 0.7.17
|
||||
fast-equals: 5.3.2
|
||||
|
||||
'@hcengineering/text-core@0.7.18':
|
||||
dependencies:
|
||||
'@hcengineering/core': 0.7.19
|
||||
'@hcengineering/core': 0.7.21
|
||||
fast-equals: 5.3.2
|
||||
hash-it: 6.0.0
|
||||
|
||||
'@hcengineering/text-ydoc@0.7.18(prosemirror-inputrules@1.5.1)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.3)':
|
||||
dependencies:
|
||||
'@hcengineering/core': 0.7.19
|
||||
'@hcengineering/core': 0.7.21
|
||||
'@hcengineering/text': 0.7.18(prosemirror-inputrules@1.5.1)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.3)
|
||||
'@hcengineering/text-core': 0.7.18
|
||||
y-protocols: 1.0.6(yjs@13.6.27)
|
||||
@@ -5561,7 +5561,7 @@ snapshots:
|
||||
|
||||
'@hcengineering/text@0.7.18(prosemirror-inputrules@1.5.1)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.3)':
|
||||
dependencies:
|
||||
'@hcengineering/core': 0.7.19
|
||||
'@hcengineering/core': 0.7.21
|
||||
'@hcengineering/text-core': 0.7.18
|
||||
'@tiptap/core': 2.26.4(@tiptap/pm@2.26.4)
|
||||
'@tiptap/extension-blockquote': 2.26.4(@tiptap/core@2.26.4(@tiptap/pm@2.26.4))
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/platform": "^0.7.17",
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/client-resources": "^0.7.17",
|
||||
"@hcengineering/client": "^0.7.17",
|
||||
"@hcengineering/account-client": "^0.7.18",
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"eslint-plugin-svelte": "^2.35.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/server-core": "workspace:^0.7.16",
|
||||
"@hcengineering/text": "^0.7.18",
|
||||
"@hcengineering/text-ydoc": "^0.7.18",
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/analytics": "^0.7.17",
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/platform": "^0.7.17",
|
||||
"@hcengineering/query": "^0.7.17",
|
||||
"@hcengineering/rpc": "^0.7.17",
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
"eslint-plugin-svelte": "^2.35.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/platform": "^0.7.17",
|
||||
"@hcengineering/server-core": "workspace:^0.7.16",
|
||||
"@hcengineering/server-token": "^0.7.17"
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
"eslint-plugin-svelte": "^2.35.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/platform": "^0.7.17",
|
||||
"@hcengineering/server-core": "workspace:^0.7.16",
|
||||
"@elastic/elasticsearch": "^7.17.14",
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
"eslint-plugin-svelte": "^2.35.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/platform": "^0.7.17",
|
||||
"@hcengineering/server-core": "workspace:^0.7.16",
|
||||
"@hcengineering/server-token": "^0.7.17",
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"eslint-plugin-svelte": "^2.35.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/platform": "^0.7.17",
|
||||
"@hcengineering/server-core": "workspace:^0.7.16",
|
||||
"@hcengineering/storage": "^0.7.17",
|
||||
|
||||
@@ -1,6 +1,18 @@
|
||||
{
|
||||
"name": "@hcengineering/middleware",
|
||||
"entries": [
|
||||
{
|
||||
"version": "0.7.17",
|
||||
"tag": "@hcengineering/middleware_v0.7.17",
|
||||
"date": "Thu, 30 Oct 2025 23:32:01 GMT",
|
||||
"comments": {
|
||||
"patch": [
|
||||
{
|
||||
"comment": "allow guests to update their identities"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"version": "0.7.16",
|
||||
"tag": "@hcengineering/middleware_v0.7.16",
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
# Change Log - @hcengineering/middleware
|
||||
|
||||
This log was last generated on Thu, 30 Oct 2025 20:53:38 GMT and should not be manually modified.
|
||||
This log was last generated on Thu, 30 Oct 2025 23:32:01 GMT and should not be manually modified.
|
||||
|
||||
## 0.7.17
|
||||
Thu, 30 Oct 2025 23:32:01 GMT
|
||||
|
||||
### Patches
|
||||
|
||||
- allow guests to update their identities
|
||||
|
||||
## 0.7.16
|
||||
Thu, 30 Oct 2025 20:53:38 GMT
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@hcengineering/middleware",
|
||||
"version": "0.7.16",
|
||||
"version": "0.7.17",
|
||||
"main": "lib/index.js",
|
||||
"svelte": "src/index.ts",
|
||||
"types": "types/index.d.ts",
|
||||
@@ -35,7 +35,7 @@
|
||||
"eslint-plugin-svelte": "^2.35.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/platform": "^0.7.17",
|
||||
"@hcengineering/server-core": "workspace:^0.7.16",
|
||||
"@hcengineering/query": "^0.7.17",
|
||||
|
||||
@@ -9,6 +9,7 @@ import core, {
|
||||
type Doc,
|
||||
hasAccountRole,
|
||||
type MeasureContext,
|
||||
type PersonId,
|
||||
type SessionData,
|
||||
type Space,
|
||||
type Tx,
|
||||
@@ -55,27 +56,28 @@ export class GuestPermissionsMiddleware extends BaseMiddleware implements Middle
|
||||
return
|
||||
}
|
||||
if (TxProcessor.isExtendsCUD(tx._class)) {
|
||||
const socialIds = ctx.contextData.account.socialIds
|
||||
const cudTx = tx as TxCUD<Doc>
|
||||
const isSpace = h.isDerived(cudTx.objectClass, core.class.Space)
|
||||
if (isSpace) {
|
||||
if (this.isForbiddenSpaceTx(cudTx as TxCUD<Space>)) {
|
||||
if (this.isForbiddenSpaceTx(cudTx as TxCUD<Space>, socialIds)) {
|
||||
throw new PlatformError(new Status(Severity.ERROR, platform.status.Forbidden, {}))
|
||||
}
|
||||
} else if (cudTx.space !== core.space.DerivedTx && this.isForbiddenTx(cudTx)) {
|
||||
} else if (cudTx.space !== core.space.DerivedTx && this.isForbiddenTx(cudTx, socialIds)) {
|
||||
throw new PlatformError(new Status(Severity.ERROR, platform.status.Forbidden, {}))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private isForbiddenTx (tx: TxCUD<Doc>): boolean {
|
||||
private isForbiddenTx (tx: TxCUD<Doc>, socialIds: PersonId[]): boolean {
|
||||
if (tx._class === core.class.TxMixin) return false
|
||||
return !this.hasMixinAccessLevel(tx)
|
||||
return !this.hasMixinAccessLevel(tx, socialIds)
|
||||
}
|
||||
|
||||
private isForbiddenSpaceTx (tx: TxCUD<Space>): boolean {
|
||||
private isForbiddenSpaceTx (tx: TxCUD<Space>, socialIds: PersonId[]): boolean {
|
||||
if (tx._class === core.class.TxRemoveDoc) return true
|
||||
if (tx._class === core.class.TxCreateDoc) {
|
||||
return !this.hasMixinAccessLevel(tx)
|
||||
return !this.hasMixinAccessLevel(tx, socialIds)
|
||||
}
|
||||
if (tx._class === core.class.TxUpdateDoc) {
|
||||
const updateTx = tx as TxUpdateDoc<Space>
|
||||
@@ -91,7 +93,7 @@ export class GuestPermissionsMiddleware extends BaseMiddleware implements Middle
|
||||
return false
|
||||
}
|
||||
|
||||
private hasMixinAccessLevel (tx: TxCUD<Doc>): boolean {
|
||||
private hasMixinAccessLevel (tx: TxCUD<Doc>, socialIds: PersonId[]): boolean {
|
||||
const h = this.context.hierarchy
|
||||
const accessLevelMixin = h.classHierarchyMixin(tx.objectClass, core.mixin.TxAccessLevel)
|
||||
if (accessLevelMixin === undefined) return false
|
||||
@@ -102,6 +104,9 @@ export class GuestPermissionsMiddleware extends BaseMiddleware implements Middle
|
||||
return accessLevelMixin.removeAccessLevel === AccountRole.Guest
|
||||
}
|
||||
if (tx._class === core.class.TxUpdateDoc) {
|
||||
if (accessLevelMixin.isIdentity === true && socialIds.includes(tx.objectId as unknown as PersonId)) {
|
||||
return true
|
||||
}
|
||||
return accessLevelMixin.updateAccessLevel === AccountRole.Guest
|
||||
}
|
||||
return false
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"eslint-plugin-svelte": "^2.35.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/platform": "^0.7.17",
|
||||
"@hcengineering/server-core": "workspace:^0.7.16",
|
||||
"minio": "^8.0.5"
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"eslint-plugin-svelte": "^2.35.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/platform": "^0.7.17",
|
||||
"@hcengineering/server-core": "workspace:^0.7.16",
|
||||
"mongodb": "^6.16.0",
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"postgres": "^3.4.7",
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/platform": "^0.7.17",
|
||||
"@hcengineering/server-core": "workspace:^0.7.16",
|
||||
"@hcengineering/postgres-base": "^0.7.17"
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"eslint-plugin-svelte": "^2.35.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/platform": "^0.7.17",
|
||||
"@hcengineering/server-core": "workspace:^0.7.16",
|
||||
"@hcengineering/storage": "^0.7.17",
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
"eslint-plugin-svelte": "^2.35.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/platform": "^0.7.17",
|
||||
"@hcengineering/server-core": "workspace:^0.7.16",
|
||||
"@hcengineering/minio": "workspace:^0.7.15",
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"dependencies": {
|
||||
"@hcengineering/account-client": "^0.7.18",
|
||||
"@hcengineering/analytics": "^0.7.17",
|
||||
"@hcengineering/core": "^0.7.19",
|
||||
"@hcengineering/core": "^0.7.21",
|
||||
"@hcengineering/platform": "^0.7.17",
|
||||
"@hcengineering/rpc": "^0.7.17",
|
||||
"@hcengineering/server-core": "workspace:^0.7.16",
|
||||
|
||||
Reference in New Issue
Block a user