Compare commits

...

4 Commits

Author SHA1 Message Date
standardci
376466d9b2 chore(release): publish new version
- @standardnotes/analytics@2.26.5
 - @standardnotes/api-gateway@1.74.1
 - @standardnotes/auth-server@1.138.1
 - @standardnotes/domain-core@1.28.0
 - @standardnotes/event-store@1.11.33
 - @standardnotes/files-server@1.22.12
 - @standardnotes/home-server@1.15.26
 - @standardnotes/revisions-server@1.32.0
 - @standardnotes/scheduler-server@1.20.37
 - @standardnotes/settings@1.21.30
 - @standardnotes/syncing-server@1.92.1
 - @standardnotes/websockets-server@1.10.34
2023-09-07 09:00:39 +00:00
Karol Sójko
e100c52bbc feat(revisions): fetching single revision in shared vault (#810)
* feat(revisions): fetching single revision in shared vault

* fix(revisions): mapping to http representation
2023-09-07 10:23:03 +02:00
Aman Harwara
d4830dec01 feat: add VaultsUser role name (#809)
* feat: add VaultsUser role name

* fix: test coverage
2023-09-07 08:07:06 +02:00
Karol Sójko
7e11821021 fix(revisions): query for shared vault revisions 2023-09-07 08:05:47 +02:00
37 changed files with 202 additions and 31 deletions

View File

@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [2.26.5](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.26.4...@standardnotes/analytics@2.26.5) (2023-09-07)
**Note:** Version bump only for package @standardnotes/analytics
## [2.26.4](https://github.com/standardnotes/server/compare/@standardnotes/analytics@2.26.3...@standardnotes/analytics@2.26.4) (2023-09-06)
**Note:** Version bump only for package @standardnotes/analytics

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/analytics",
"version": "2.26.4",
"version": "2.26.5",
"engines": {
"node": ">=18.0.0 <21.0.0"
},

View File

@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.74.1](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.74.0...@standardnotes/api-gateway@1.74.1) (2023-09-07)
**Note:** Version bump only for package @standardnotes/api-gateway
# [1.74.0](https://github.com/standardnotes/api-gateway/compare/@standardnotes/api-gateway@1.73.7...@standardnotes/api-gateway@1.74.0) (2023-09-06)
### Features

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/api-gateway",
"version": "1.74.0",
"version": "1.74.1",
"engines": {
"node": ">=18.0.0 <21.0.0"
},

View File

@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.138.1](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.138.0...@standardnotes/auth-server@1.138.1) (2023-09-07)
**Note:** Version bump only for package @standardnotes/auth-server
# [1.138.0](https://github.com/standardnotes/server/compare/@standardnotes/auth-server@1.137.6...@standardnotes/auth-server@1.138.0) (2023-09-06)
### Features

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/auth-server",
"version": "1.138.0",
"version": "1.138.1",
"engines": {
"node": ">=18.0.0 <21.0.0"
},

View File

@@ -3,6 +3,12 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [1.28.0](https://github.com/standardnotes/server/compare/@standardnotes/domain-core@1.27.0...@standardnotes/domain-core@1.28.0) (2023-09-07)
### Features
* add VaultsUser role name ([#809](https://github.com/standardnotes/server/issues/809)) ([d4830de](https://github.com/standardnotes/server/commit/d4830dec018139ffaf93d0e91d6655c5dcc6be9c))
# [1.27.0](https://github.com/standardnotes/server/compare/@standardnotes/domain-core@1.26.3...@standardnotes/domain-core@1.27.0) (2023-09-06)
### Features

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/domain-core",
"version": "1.27.0",
"version": "1.28.0",
"engines": {
"node": ">=18.0.0 <21.0.0"
},

View File

@@ -9,6 +9,7 @@ export class RoleName extends ValueObject<RoleNameProps> {
ProUser: 'PRO_USER',
InternalTeamUser: 'INTERNAL_TEAM_USER',
TransitionUser: 'TRANSITION_USER',
VaultsUser: 'VAULTS_USER',
}
get value(): string {
@@ -32,6 +33,7 @@ export class RoleName extends ValueObject<RoleNameProps> {
)
case RoleName.NAMES.CoreUser:
case RoleName.NAMES.TransitionUser:
case RoleName.NAMES.VaultsUser:
return [RoleName.NAMES.CoreUser, RoleName.NAMES.TransitionUser].includes(roleName.value)
/*istanbul ignore next*/
default:

View File

@@ -51,7 +51,7 @@ describe('RoleNameCollection', () => {
})
it('should tell if collection has a role with more or equal power to', () => {
let roles = [RoleName.NAMES.CoreUser]
let roles = [RoleName.NAMES.VaultsUser]
let valueOrError = RoleNameCollection.create(roles)
let roleNames = valueOrError.getValue()
@@ -63,6 +63,18 @@ describe('RoleNameCollection', () => {
roleNames.hasARoleNameWithMoreOrEqualPowerTo(RoleName.create(RoleName.NAMES.CoreUser).getValue()),
).toBeTruthy()
roles = [RoleName.NAMES.CoreUser]
valueOrError = RoleNameCollection.create(roles)
roleNames = valueOrError.getValue()
expect(
roleNames.hasARoleNameWithMoreOrEqualPowerTo(RoleName.create(RoleName.NAMES.PlusUser).getValue()),
).toBeFalsy()
expect(roleNames.hasARoleNameWithMoreOrEqualPowerTo(RoleName.create(RoleName.NAMES.ProUser).getValue())).toBeFalsy()
expect(
roleNames.hasARoleNameWithMoreOrEqualPowerTo(RoleName.create(RoleName.NAMES.CoreUser).getValue()),
).toBeTruthy()
roles = [RoleName.NAMES.CoreUser, RoleName.NAMES.PlusUser]
valueOrError = RoleNameCollection.create(roles)
roleNames = valueOrError.getValue()

View File

@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.11.33](https://github.com/standardnotes/server/compare/@standardnotes/event-store@1.11.32...@standardnotes/event-store@1.11.33) (2023-09-07)
**Note:** Version bump only for package @standardnotes/event-store
## [1.11.32](https://github.com/standardnotes/server/compare/@standardnotes/event-store@1.11.31...@standardnotes/event-store@1.11.32) (2023-09-06)
**Note:** Version bump only for package @standardnotes/event-store

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/event-store",
"version": "1.11.32",
"version": "1.11.33",
"description": "Event Store Service",
"private": true,
"main": "dist/src/index.js",

View File

@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.22.12](https://github.com/standardnotes/files/compare/@standardnotes/files-server@1.22.11...@standardnotes/files-server@1.22.12) (2023-09-07)
**Note:** Version bump only for package @standardnotes/files-server
## [1.22.11](https://github.com/standardnotes/files/compare/@standardnotes/files-server@1.22.10...@standardnotes/files-server@1.22.11) (2023-09-06)
**Note:** Version bump only for package @standardnotes/files-server

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/files-server",
"version": "1.22.11",
"version": "1.22.12",
"engines": {
"node": ">=18.0.0 <21.0.0"
},

View File

@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.15.26](https://github.com/standardnotes/server/compare/@standardnotes/home-server@1.15.25...@standardnotes/home-server@1.15.26) (2023-09-07)
**Note:** Version bump only for package @standardnotes/home-server
## [1.15.25](https://github.com/standardnotes/server/compare/@standardnotes/home-server@1.15.24...@standardnotes/home-server@1.15.25) (2023-09-06)
**Note:** Version bump only for package @standardnotes/home-server

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/home-server",
"version": "1.15.25",
"version": "1.15.26",
"engines": {
"node": ">=18.0.0 <21.0.0"
},

View File

@@ -3,6 +3,16 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [1.32.0](https://github.com/standardnotes/server/compare/@standardnotes/revisions-server@1.31.0...@standardnotes/revisions-server@1.32.0) (2023-09-07)
### Bug Fixes
* **revisions:** query for shared vault revisions ([7e11821](https://github.com/standardnotes/server/commit/7e11821021a663fcf452ad8bb03eda33c03fe221))
### Features
* **revisions:** fetching single revision in shared vault ([#810](https://github.com/standardnotes/server/issues/810)) ([e100c52](https://github.com/standardnotes/server/commit/e100c52bbc07447188af3b9a04f3744401dac0ab))
# [1.31.0](https://github.com/standardnotes/server/compare/@standardnotes/revisions-server@1.30.14...@standardnotes/revisions-server@1.31.0) (2023-09-06)
### Features

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/revisions-server",
"version": "1.31.0",
"version": "1.32.0",
"engines": {
"node": ">=18.0.0 <21.0.0"
},

View File

@@ -7,7 +7,7 @@ export interface RevisionRepositoryInterface {
countByUserUuid(userUuid: Uuid): Promise<number>
removeByUserUuid(userUuid: Uuid): Promise<void>
removeOneByUuid(revisionUuid: Uuid, userUuid: Uuid): Promise<void>
findOneByUuid(revisionUuid: Uuid, userUuid: Uuid): Promise<Revision | null>
findOneByUuid(revisionUuid: Uuid, userUuid: Uuid, sharedVaultUuids: Uuid[]): Promise<Revision | null>
findByItemUuid(itemUuid: Uuid): Promise<Array<Revision>>
findMetadataByItemId(itemUuid: Uuid, userUuid: Uuid, sharedVaultUuids: Uuid[]): Promise<Array<RevisionMetadata>>
updateUserUuid(itemUuid: Uuid, userUuid: Uuid): Promise<void>

View File

@@ -22,17 +22,30 @@ describe('GetRevision', () => {
revisionUuid: '84c0f8e8-544a-4c7e-9adf-26209303bc1d',
userUuid: '84c0f8e8-544a-4c7e-9adf-26209303bc1d',
roleNames: ['CORE_USER'],
sharedVaultUuids: ['84c0f8e8-544a-4c7e-9adf-26209303bc1d'],
})
expect(result.isFailed()).toBeFalsy()
expect(result.getValue()).not.toBeNull()
})
it('should do nothing if shared vault uuid is invalid', async () => {
const result = await createUseCase().execute({
revisionUuid: '84c0f8e8-544a-4c7e-9adf-26209303bc1d',
userUuid: '84c0f8e8-544a-4c7e-9adf-26209303bc1d',
roleNames: ['CORE_USER'],
sharedVaultUuids: ['INVALID_SHARED_VAULT_UUID'],
})
expect(result.isFailed()).toBeTruthy()
})
it('should do nothing if role names are not valid', async () => {
const result = await createUseCase().execute({
revisionUuid: '84c0f8e8-544a-4c7e-9adf-26209303bc1d',
userUuid: '84c0f8e8-544a-4c7e-9adf-26209303bc1d',
roleNames: ['INVALID_ROLE_NAME'],
sharedVaultUuids: ['84c0f8e8-544a-4c7e-9adf-26209303bc1d'],
})
expect(result.isFailed()).toBeTruthy()
@@ -45,6 +58,7 @@ describe('GetRevision', () => {
revisionUuid: '84c0f8e8-544a-4c7e-9adf-26209303bc1d',
userUuid: '84c0f8e8-544a-4c7e-9adf-26209303bc1d',
roleNames: ['CORE_USER'],
sharedVaultUuids: ['84c0f8e8-544a-4c7e-9adf-26209303bc1d'],
})
expect(result.isFailed()).toBeTruthy()
@@ -55,6 +69,7 @@ describe('GetRevision', () => {
revisionUuid: '1-2-3',
userUuid: '84c0f8e8-544a-4c7e-9adf-26209303bc1d',
roleNames: ['CORE_USER'],
sharedVaultUuids: ['84c0f8e8-544a-4c7e-9adf-26209303bc1d'],
})
expect(result.isFailed()).toBeTruthy()
@@ -65,6 +80,7 @@ describe('GetRevision', () => {
userUuid: '1-2-3',
revisionUuid: '84c0f8e8-544a-4c7e-9adf-26209303bc1d',
roleNames: ['CORE_USER'],
sharedVaultUuids: ['84c0f8e8-544a-4c7e-9adf-26209303bc1d'],
})
expect(result.isFailed()).toBeTruthy()

View File

@@ -26,9 +26,18 @@ export class GetRevision implements UseCaseInterface<Revision> {
}
const roleNames = roleNamesOrError.getValue()
const sharedVaultUuids = []
for (const sharedVaultUuid of dto.sharedVaultUuids) {
const sharedVaultUuidOrError = Uuid.create(sharedVaultUuid)
if (sharedVaultUuidOrError.isFailed()) {
return Result.fail(`Could not get revision: ${sharedVaultUuidOrError.getError()}`)
}
sharedVaultUuids.push(sharedVaultUuidOrError.getValue())
}
const revisionRepository = this.revisionRepositoryResolver.resolve(roleNames)
const revision = await revisionRepository.findOneByUuid(revisionUuid, userUuid)
const revision = await revisionRepository.findOneByUuid(revisionUuid, userUuid, sharedVaultUuids)
if (revision === null) {
return Result.fail<Revision>(`Could not find revision with uuid: ${revisionUuid.value}`)

View File

@@ -2,4 +2,5 @@ export interface GetRevisionDTO {
userUuid: string
revisionUuid: string
roleNames: string[]
sharedVaultUuids: string[]
}

View File

@@ -174,7 +174,7 @@ export class TransitionRevisionsFromPrimaryToSecondaryDatabaseForUser implements
const revisionInSecondary = await (
this.secondRevisionsRepository as RevisionRepositoryInterface
).findOneByUuid(revisionUuid, userUuid)
).findOneByUuid(revisionUuid, userUuid, [])
if (!revisionInSecondary) {
return Result.fail(`Revision ${revision.id.toString()} not found in secondary database`)
}

View File

@@ -65,13 +65,16 @@ export class BaseRevisionsController extends BaseHttpController {
revisionUuid: request.params.uuid,
userUuid: response.locals.user.uuid,
roleNames: response.locals.roles.map((role: Role) => role.name),
sharedVaultUuids: response.locals.belongsToSharedVaults.map(
(association: { shared_vault_uuid: string; permission: string }) => association.shared_vault_uuid,
),
})
if (revisionOrError.isFailed()) {
return this.json(
{
error: {
message: 'Could not retrieve revision.',
message: revisionOrError.getError(),
},
},
HttpStatusCode.BadRequest,

View File

@@ -49,15 +49,32 @@ export class MongoDBRevisionRepository implements RevisionRepositoryInterface {
})
}
async findOneByUuid(revisionUuid: Uuid, userUuid: Uuid): Promise<Revision | null> {
const persistence = await this.mongoRepository.findOne({
where: {
$and: [
{ _id: { $eq: BSON.UUID.createFromHexString(revisionUuid.value) } },
{ userUuid: { $eq: userUuid.value } },
],
},
})
async findOneByUuid(revisionUuid: Uuid, userUuid: Uuid, sharedVaultUuids: Uuid[]): Promise<Revision | null> {
let persistence = null
if (sharedVaultUuids.length > 0) {
persistence = await this.mongoRepository.findOne({
where: {
$and: [
{ _id: { $eq: BSON.UUID.createFromHexString(revisionUuid.value) } },
{
$or: [
{ sharedVaultUuid: { $in: sharedVaultUuids.map((uuid) => uuid.value) } },
{ userUuid: { $eq: userUuid.value } },
],
},
],
},
})
} else {
persistence = await this.mongoRepository.findOne({
where: {
$and: [
{ _id: { $eq: BSON.UUID.createFromHexString(revisionUuid.value) } },
{ userUuid: { $eq: userUuid.value } },
],
},
})
}
if (persistence === null) {
return null
@@ -98,7 +115,12 @@ export class MongoDBRevisionRepository implements RevisionRepositoryInterface {
where: {
$and: [
{ itemUuid: { $eq: itemUuid.value } },
{ sharedVaultUuid: { $in: sharedVaultUuids.map((uuid) => uuid.value) } },
{
$or: [
{ sharedVaultUuid: { $in: sharedVaultUuids.map((uuid) => uuid.value) } },
{ userUuid: { $eq: userUuid.value } },
],
},
],
},
order: {

View File

@@ -92,7 +92,7 @@ export class SQLLegacyRevisionRepository implements RevisionRepositoryInterface
.execute()
}
async findOneByUuid(revisionUuid: Uuid, userUuid: Uuid): Promise<Revision | null> {
async findOneByUuid(revisionUuid: Uuid, userUuid: Uuid, _sharedVaultUuids: Uuid[]): Promise<Revision | null> {
const SQLLegacyRevision = await this.ormRepository
.createQueryBuilder()
.where('uuid = :revisionUuid', { revisionUuid: revisionUuid.value })

View File

@@ -17,6 +17,34 @@ export class SQLRevisionRepository extends SQLLegacyRevisionRepository {
super(ormRepository, revisionMetadataMapper, revisionMapper, logger)
}
override async findOneByUuid(revisionUuid: Uuid, userUuid: Uuid, sharedVaultUuids: Uuid[]): Promise<Revision | null> {
const queryBuilder = this.ormRepository.createQueryBuilder()
if (sharedVaultUuids.length > 0) {
queryBuilder.where(
'uuid = :revisionUuid AND (user_uuid = :userUuid OR shared_vault_uuid IN (:...sharedVaultUuids))',
{
revisionUuid: revisionUuid.value,
userUuid: userUuid.value,
sharedVaultUuids: sharedVaultUuids.map((uuid) => uuid.value),
},
)
} else {
queryBuilder.where('uuid = :revisionUuid AND user_uuid = :userUuid', {
revisionUuid: revisionUuid.value,
userUuid: userUuid.value,
})
}
const sqlRevision = await queryBuilder.getOne()
if (sqlRevision === null) {
return null
}
return this.revisionMapper.toDomain(sqlRevision)
}
override async findMetadataByItemId(
itemUuid: Uuid,
userUuid: Uuid,
@@ -28,13 +56,21 @@ export class SQLRevisionRepository extends SQLLegacyRevisionRepository {
.addSelect('content_type', 'contentType')
.addSelect('created_at', 'createdAt')
.addSelect('updated_at', 'updatedAt')
.where('item_uuid = :itemUuid AND user_uuid = :userUuid', { itemUuid: itemUuid.value, userUuid: userUuid.value })
.orderBy('created_at', 'DESC')
if (sharedVaultUuids.length > 0) {
queryBuilder.orWhere('item_uuid = :itemUuid AND shared_vault_uuid IN (:...sharedVaultUuids)', {
queryBuilder.where(
'item_uuid = :itemUuid AND (user_uuid = :userUuid OR shared_vault_uuid IN (:...sharedVaultUuids))',
{
itemUuid: itemUuid.value,
userUuid: userUuid.value,
sharedVaultUuids: sharedVaultUuids.map((uuid) => uuid.value),
},
)
} else {
queryBuilder.where('item_uuid = :itemUuid AND user_uuid = :userUuid', {
itemUuid: itemUuid.value,
sharedVaultUuids: sharedVaultUuids.map((uuid) => uuid.value),
userUuid: userUuid.value,
})
}

View File

@@ -19,6 +19,16 @@ export class RevisionHttpMapper implements MapperInterface<Revision, RevisionHtt
auth_hash: domain.props.authHash,
created_at: domain.props.dates.createdAt.toISOString(),
updated_at: domain.props.dates.updatedAt.toISOString(),
key_system_identifier: domain.props.keySystemAssociation
? domain.props.keySystemAssociation.props.keySystemIdentifier
: null,
shared_vault_uuid: domain.props.sharedVaultAssociation
? domain.props.sharedVaultAssociation.props.sharedVaultUuid.value
: null,
last_edited_by_uuid: domain.props.sharedVaultAssociation
? domain.props.sharedVaultAssociation.props.editedBy.value
: null,
user_uuid: domain.props.userUuid ? domain.props.userUuid.value : null,
}
}
}

View File

@@ -8,4 +8,8 @@ export interface RevisionHttpRepresentation {
auth_hash: string | null
created_at: string
updated_at: string
key_system_identifier: string | null
shared_vault_uuid: string | null
user_uuid: string | null
last_edited_by_uuid: string | null
}

View File

@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.20.37](https://github.com/standardnotes/server/compare/@standardnotes/scheduler-server@1.20.36...@standardnotes/scheduler-server@1.20.37) (2023-09-07)
**Note:** Version bump only for package @standardnotes/scheduler-server
## [1.20.36](https://github.com/standardnotes/server/compare/@standardnotes/scheduler-server@1.20.35...@standardnotes/scheduler-server@1.20.36) (2023-09-06)
**Note:** Version bump only for package @standardnotes/scheduler-server

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/scheduler-server",
"version": "1.20.36",
"version": "1.20.37",
"engines": {
"node": ">=18.0.0 <21.0.0"
},

View File

@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.21.30](https://github.com/standardnotes/server/compare/@standardnotes/settings@1.21.29...@standardnotes/settings@1.21.30) (2023-09-07)
**Note:** Version bump only for package @standardnotes/settings
## [1.21.29](https://github.com/standardnotes/server/compare/@standardnotes/settings@1.21.28...@standardnotes/settings@1.21.29) (2023-09-06)
**Note:** Version bump only for package @standardnotes/settings

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/settings",
"version": "1.21.29",
"version": "1.21.30",
"engines": {
"node": ">=18.0.0 <21.0.0"
},

View File

@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.92.1](https://github.com/standardnotes/syncing-server-js/compare/@standardnotes/syncing-server@1.92.0...@standardnotes/syncing-server@1.92.1) (2023-09-07)
**Note:** Version bump only for package @standardnotes/syncing-server
# [1.92.0](https://github.com/standardnotes/syncing-server-js/compare/@standardnotes/syncing-server@1.91.3...@standardnotes/syncing-server@1.92.0) (2023-09-06)
### Features

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/syncing-server",
"version": "1.92.0",
"version": "1.92.1",
"engines": {
"node": ">=18.0.0 <21.0.0"
},

View File

@@ -3,6 +3,10 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.10.34](https://github.com/standardnotes/server/compare/@standardnotes/websockets-server@1.10.33...@standardnotes/websockets-server@1.10.34) (2023-09-07)
**Note:** Version bump only for package @standardnotes/websockets-server
## [1.10.33](https://github.com/standardnotes/server/compare/@standardnotes/websockets-server@1.10.32...@standardnotes/websockets-server@1.10.33) (2023-09-06)
**Note:** Version bump only for package @standardnotes/websockets-server

View File

@@ -1,6 +1,6 @@
{
"name": "@standardnotes/websockets-server",
"version": "1.10.33",
"version": "1.10.34",
"engines": {
"node": ">=18.0.0 <21.0.0"
},