diff --git a/packages/server/modules/automate/index.ts b/packages/server/modules/automate/index.ts index 8570076ce..2ca3e4ae9 100644 --- a/packages/server/modules/automate/index.ts +++ b/packages/server/modules/automate/index.ts @@ -1,6 +1,5 @@ import { automateLogger, moduleLogger } from '@/logging/logging' import { Optional, SpeckleModule } from '@/modules/shared/helpers/typeHelper' -import { VersionEvents, VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { onModelVersionCreateFactory, triggerAutomationRevisionRunFactory @@ -58,6 +57,8 @@ import { import { isFinished } from '@/modules/automate/domain/logic' import { mixpanel } from '@/modules/shared/utils/mixpanel' import { getProjectFactory } from '@/modules/core/repositories/projects' +import { getEventBus } from '@/modules/shared/services/eventBus' +import { VersionEvents } from '@/modules/core/domain/commits/events' const { FF_AUTOMATE_MODULE_ENABLED } = getFeatureFlags() let quitListeners: Optional<() => void> = undefined @@ -97,12 +98,11 @@ const initializeEventListeners = () => { storeUserServerAppToken: storeUserServerAppTokenFactory({ db }) }) - // TODO: Use new event bus const quitters = [ // Automation trigger events - VersionsEmitter.listen( + getEventBus().listen( VersionEvents.Created, - async ({ modelId, version, projectId }) => { + async ({ payload: { modelId, version, projectId } }) => { const projectDb = await getProjectDbClient({ projectId }) await onModelVersionCreateFactory({ getAutomation: getAutomationFactory({ db: projectDb }), diff --git a/packages/server/modules/cli/commands/download/commit.ts b/packages/server/modules/cli/commands/download/commit.ts index 2a7868f1c..a5da2f3e7 100644 --- a/packages/server/modules/cli/commands/download/commit.ts +++ b/packages/server/modules/cli/commands/download/commit.ts @@ -54,7 +54,6 @@ import { import { validateInputAttachmentsFactory } from '@/modules/comments/services/commentTextService' import { getBlobsFactory } from '@/modules/blobstorage/repositories' import { createCommitByBranchIdFactory } from '@/modules/core/services/commit/management' -import { VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { addCommitCreatedActivityFactory } from '@/modules/activitystream/services/commitActivity' import { saveActivityFactory } from '@/modules/activitystream/repositories' import { publish } from '@/modules/shared/utils/subscriptions' @@ -62,6 +61,7 @@ import { getUserFactory } from '@/modules/core/repositories/users' import { createObjectFactory } from '@/modules/core/services/objects/management' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' import { db, mainDb } from '@/db/knex' +import { getEventBus } from '@/modules/shared/services/eventBus' const command: CommandModule< unknown, @@ -178,7 +178,7 @@ const command: CommandModule< insertBranchCommits: insertBranchCommitsFactory({ db: projectDb }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db: projectDb }), - versionsEventEmitter: VersionsEmitter.emit, + emitEvent: getEventBus().emit, addCommitCreatedActivity: addCommitCreatedActivityFactory({ saveActivity: saveActivityFactory({ db: mainDb }), publish diff --git a/packages/server/modules/cli/commands/download/project.ts b/packages/server/modules/cli/commands/download/project.ts index 069f13c73..b980648cc 100644 --- a/packages/server/modules/cli/commands/download/project.ts +++ b/packages/server/modules/cli/commands/download/project.ts @@ -58,7 +58,6 @@ import { } from '@/modules/comments/repositories/comments' import { getBlobsFactory } from '@/modules/blobstorage/repositories' import { validateInputAttachmentsFactory } from '@/modules/comments/services/commentTextService' -import { VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { saveActivityFactory } from '@/modules/activitystream/repositories' import { publish } from '@/modules/shared/utils/subscriptions' import { addCommitCreatedActivityFactory } from '@/modules/activitystream/services/commitActivity' @@ -204,7 +203,7 @@ const command: CommandModule< insertBranchCommits: insertBranchCommitsFactory({ db: projectDb }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db: projectDb }), - versionsEventEmitter: VersionsEmitter.emit, + emitEvent: getEventBus().emit, addCommitCreatedActivity: addCommitCreatedActivityFactory({ saveActivity: saveActivityFactory({ db: mainDb }), publish diff --git a/packages/server/modules/comments/tests/comments.graph.spec.js b/packages/server/modules/comments/tests/comments.graph.spec.js index d777048dd..dc197d232 100644 --- a/packages/server/modules/comments/tests/comments.graph.spec.js +++ b/packages/server/modules/comments/tests/comments.graph.spec.js @@ -52,7 +52,6 @@ const { grantStreamPermissionsFactory, markCommitStreamUpdatedFactory } = require('@/modules/core/repositories/streams') -const { VersionsEmitter } = require('@/modules/core/events/versionsEmitter') const { getObjectFactory, storeSingleObjectIfNotFoundFactory, @@ -146,7 +145,7 @@ const createCommitByBranchId = createCommitByBranchIdFactory({ insertBranchCommits: insertBranchCommitsFactory({ db }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db }), - versionsEventEmitter: VersionsEmitter.emit, + emitEvent: getEventBus().emit, addCommitCreatedActivity: addCommitCreatedActivityFactory({ saveActivity: saveActivityFactory({ db }), publish diff --git a/packages/server/modules/comments/tests/comments.spec.js b/packages/server/modules/comments/tests/comments.spec.js index d2e63fa18..271ddbb4b 100644 --- a/packages/server/modules/comments/tests/comments.spec.js +++ b/packages/server/modules/comments/tests/comments.spec.js @@ -72,7 +72,6 @@ const { getStreamBranchByNameFactory, createBranchFactory } = require('@/modules/core/repositories/branches') -const { VersionsEmitter } = require('@/modules/core/events/versionsEmitter') const { getObjectFactory, storeSingleObjectIfNotFoundFactory, @@ -195,7 +194,7 @@ const createCommitByBranchId = createCommitByBranchIdFactory({ insertBranchCommits: insertBranchCommitsFactory({ db }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db }), - versionsEventEmitter: VersionsEmitter.emit, + emitEvent: getEventBus().emit, addCommitCreatedActivity: addCommitCreatedActivityFactory({ saveActivity: saveActivityFactory({ db }), publish diff --git a/packages/server/modules/core/domain/commits/events.ts b/packages/server/modules/core/domain/commits/events.ts new file mode 100644 index 000000000..a5534f7a3 --- /dev/null +++ b/packages/server/modules/core/domain/commits/events.ts @@ -0,0 +1,11 @@ +import { Version } from '@/modules/core/domain/commits/types' + +export const versionEventsNamespace = 'versions' as const + +export const VersionEvents = { + Created: `${versionEventsNamespace}.created` +} as const + +export type VersionEventsPayloads = { + [VersionEvents.Created]: { projectId: string; modelId: string; version: Version } +} diff --git a/packages/server/modules/core/domain/commits/operations.ts b/packages/server/modules/core/domain/commits/operations.ts index a8fee25c1..bbb221f64 100644 --- a/packages/server/modules/core/domain/commits/operations.ts +++ b/packages/server/modules/core/domain/commits/operations.ts @@ -232,7 +232,7 @@ export type GetPaginatedBranchCommitsItemsByName = (params: { limit: number cursor?: Nullable }) => Promise<{ - commits: Commit[] + commits: CommitWithStreamBranchId[] cursor: string | null }> diff --git a/packages/server/modules/core/domain/commits/types.ts b/packages/server/modules/core/domain/commits/types.ts index 158e8a478..7f1f31b59 100644 --- a/packages/server/modules/core/domain/commits/types.ts +++ b/packages/server/modules/core/domain/commits/types.ts @@ -8,6 +8,7 @@ import { } from '@/modules/core/helpers/types' export type Commit = CommitRecord +export type Version = Commit export type CommitWithBranchId = Commit & { branchId: string } diff --git a/packages/server/modules/core/events/versionsEmitter.ts b/packages/server/modules/core/events/versionsEmitter.ts deleted file mode 100644 index c07541d1a..000000000 --- a/packages/server/modules/core/events/versionsEmitter.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { CommitRecord } from '@/modules/core/helpers/types' -import { initializeModuleEventEmitter } from '@/modules/shared/services/moduleEventEmitterSetup' - -export enum VersionEvents { - Created = 'created' -} - -export type VersionEventsPayloads = { - [VersionEvents.Created]: { projectId: string; modelId: string; version: CommitRecord } -} - -const { emit, listen } = initializeModuleEventEmitter({ - moduleName: 'core', - namespace: 'users' -}) - -export const VersionsEmitter = { emit, listen, events: VersionEvents } -export type VersionsEventEmitter = (typeof VersionsEmitter)['emit'] -export type VersionsEventListener = (typeof VersionsEmitter)['listen'] diff --git a/packages/server/modules/core/graph/resolvers/commits.ts b/packages/server/modules/core/graph/resolvers/commits.ts index b2f1c35a4..40da4716c 100644 --- a/packages/server/modules/core/graph/resolvers/commits.ts +++ b/packages/server/modules/core/graph/resolvers/commits.ts @@ -71,7 +71,6 @@ import { addCommitMovedActivityFactory, addCommitDeletedActivityFactory } from '@/modules/activitystream/services/commitActivity' -import { VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { getObjectFactory } from '@/modules/core/repositories/objects' import { validateStreamAccessFactory } from '@/modules/core/services/streams/access' import { saveActivityFactory } from '@/modules/activitystream/repositories' @@ -83,6 +82,7 @@ import { } from '@/modules/multiregion/utils/dbSelector' import { LegacyUserCommit } from '@/modules/core/domain/commits/types' import coreModule from '@/modules/core' +import { getEventBus } from '@/modules/shared/services/eventBus' const getStreams = getStreamsFactory({ db }) @@ -349,7 +349,7 @@ export = { insertBranchCommits: insertBranchCommitsFactory({ db: projectDb }), markCommitStreamUpdated: markCommitStreamUpdatedFactory({ db: projectDb }), markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db: projectDb }), - versionsEventEmitter: VersionsEmitter.emit, + emitEvent: getEventBus().emit, addCommitCreatedActivity: addCommitCreatedActivityFactory({ saveActivity: saveActivityFactory({ db }), publish diff --git a/packages/server/modules/core/graph/resolvers/versions.ts b/packages/server/modules/core/graph/resolvers/versions.ts index a4cc7bec7..4b38bb9c6 100644 --- a/packages/server/modules/core/graph/resolvers/versions.ts +++ b/packages/server/modules/core/graph/resolvers/versions.ts @@ -47,7 +47,6 @@ import { getStreamsFactory, markCommitStreamUpdatedFactory } from '@/modules/core/repositories/streams' -import { VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { addCommitCreatedActivityFactory, addCommitDeletedActivityFactory, @@ -58,6 +57,7 @@ import { getObjectFactory } from '@/modules/core/repositories/objects' import { saveActivityFactory } from '@/modules/activitystream/repositories' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' import coreModule from '@/modules/core' +import { getEventBus } from '@/modules/shared/services/eventBus' export = { Project: { @@ -197,7 +197,7 @@ export = { insertBranchCommits: insertBranchCommitsFactory({ db: projectDb }), markCommitStreamUpdated: markCommitStreamUpdatedFactory({ db: projectDb }), markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db: projectDb }), - versionsEventEmitter: VersionsEmitter.emit, + emitEvent: getEventBus().emit, addCommitCreatedActivity: addCommitCreatedActivityFactory({ saveActivity: saveActivityFactory({ db }), publish diff --git a/packages/server/modules/core/services/commit/management.ts b/packages/server/modules/core/services/commit/management.ts index 8d93f61aa..78ca57100 100644 --- a/packages/server/modules/core/services/commit/management.ts +++ b/packages/server/modules/core/services/commit/management.ts @@ -10,6 +10,7 @@ import { GetStreamBranchByName, MarkCommitBranchUpdated } from '@/modules/core/domain/branches/operations' +import { VersionEvents } from '@/modules/core/domain/commits/events' import { CreateCommitByBranchId, CreateCommitByBranchName, @@ -36,10 +37,6 @@ import { CommitReceiveError, CommitUpdateError } from '@/modules/core/errors/commit' -import { - VersionEvents, - VersionsEventEmitter -} from '@/modules/core/events/versionsEmitter' import { CommitReceivedInput, CommitUpdateInput, @@ -47,6 +44,7 @@ import { UpdateVersionInput } from '@/modules/core/graph/generated/graphql' import { BranchRecord, CommitRecord } from '@/modules/core/helpers/types' +import { EventBusEmit } from '@/modules/shared/services/eventBus' import { ensureError, Roles } from '@speckle/shared' import { has } from 'lodash' @@ -100,8 +98,8 @@ export const createCommitByBranchIdFactory = insertBranchCommits: InsertBranchCommits markCommitStreamUpdated: MarkCommitStreamUpdated markCommitBranchUpdated: MarkCommitBranchUpdated - versionsEventEmitter: VersionsEventEmitter addCommitCreatedActivity: AddCommitCreatedActivity + emitEvent: EventBusEmit }): CreateCommitByBranchId => async (params, options) => { const { @@ -153,10 +151,13 @@ export const createCommitByBranchIdFactory = await Promise.all([ deps.markCommitStreamUpdated(id), deps.markCommitBranchUpdated(id), - deps.versionsEventEmitter(VersionEvents.Created, { - projectId: streamId, - modelId: branchId, - version: commit + deps.emitEvent({ + eventName: VersionEvents.Created, + payload: { + projectId: streamId, + modelId: branchId, + version: commit + } }), ...(notify ? [ diff --git a/packages/server/modules/core/tests/branches.spec.ts b/packages/server/modules/core/tests/branches.spec.ts index b07e31826..a0fc7e223 100644 --- a/packages/server/modules/core/tests/branches.spec.ts +++ b/packages/server/modules/core/tests/branches.spec.ts @@ -42,7 +42,6 @@ import { insertStreamCommitsFactory, insertBranchCommitsFactory } from '@/modules/core/repositories/commits' -import { VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { getObjectFactory, storeSingleObjectIfNotFoundFactory, @@ -132,7 +131,7 @@ const createCommitByBranchId = createCommitByBranchIdFactory({ insertBranchCommits: insertBranchCommitsFactory({ db }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db }), - versionsEventEmitter: VersionsEmitter.emit, + emitEvent: getEventBus().emit, addCommitCreatedActivity: addCommitCreatedActivityFactory({ saveActivity: saveActivityFactory({ db }), publish diff --git a/packages/server/modules/core/tests/commits.spec.js b/packages/server/modules/core/tests/commits.spec.ts similarity index 79% rename from packages/server/modules/core/tests/commits.spec.js rename to packages/server/modules/core/tests/commits.spec.ts index 26a5d03e1..5d22b2605 100644 --- a/packages/server/modules/core/tests/commits.spec.js +++ b/packages/server/modules/core/tests/commits.spec.ts @@ -1,20 +1,18 @@ /* istanbul ignore file */ -const expect = require('chai').expect +import { expect } from 'chai' -const { beforeEachContext } = require('@/test/hooks') +import { beforeEachContext } from '@/test/hooks' -const { - createBranchAndNotifyFactory -} = require('@/modules/core/services/branch/management') -const cryptoRandomString = require('crypto-random-string') -const { +import { createBranchAndNotifyFactory } from '@/modules/core/services/branch/management' +import cryptoRandomString from 'crypto-random-string' +import { createBranchFactory, getStreamBranchByNameFactory, markCommitBranchUpdatedFactory, getBranchByIdFactory -} = require('@/modules/core/repositories/branches') -const { db } = require('@/db/knex') -const { +} from '@/modules/core/repositories/branches' +import { db } from '@/db/knex' +import { getCommitFactory, deleteCommitFactory, createCommitFactory, @@ -28,91 +26,74 @@ const { legacyGetPaginatedStreamCommitsPageFactory, getBranchCommitsTotalCountFactory, getPaginatedBranchCommitsItemsFactory -} = require('@/modules/core/repositories/commits') -const { +} from '@/modules/core/repositories/commits' +import { deleteCommitAndNotifyFactory, createCommitByBranchIdFactory, createCommitByBranchNameFactory, updateCommitAndNotifyFactory -} = require('@/modules/core/services/commit/management') -const { +} from '@/modules/core/services/commit/management' +import { getStreamFactory, getCommitStreamFactory, createStreamFactory, markCommitStreamUpdatedFactory -} = require('@/modules/core/repositories/streams') -const { +} from '@/modules/core/repositories/streams' +import { addCommitUpdatedActivityFactory, addCommitDeletedActivityFactory, addCommitCreatedActivityFactory -} = require('@/modules/activitystream/services/commitActivity') -const { VersionsEmitter } = require('@/modules/core/events/versionsEmitter') -const { +} from '@/modules/activitystream/services/commitActivity' +import { getObjectFactory, storeSingleObjectIfNotFoundFactory, storeClosuresIfNotFoundFactory -} = require('@/modules/core/repositories/objects') -const { +} from '@/modules/core/repositories/objects' +import { legacyCreateStreamFactory, createStreamReturnRecordFactory -} = require('@/modules/core/services/streams/management') -const { - inviteUsersToProjectFactory -} = require('@/modules/serverinvites/services/projectInviteManagement') -const { - createAndSendInviteFactory -} = require('@/modules/serverinvites/services/creation') -const { +} from '@/modules/core/services/streams/management' +import { inviteUsersToProjectFactory } from '@/modules/serverinvites/services/projectInviteManagement' +import { createAndSendInviteFactory } from '@/modules/serverinvites/services/creation' +import { findUserByTargetFactory, insertInviteAndDeleteOldFactory, deleteServerOnlyInvitesFactory, updateAllInviteTargetsFactory -} = require('@/modules/serverinvites/repositories/serverInvites') -const { - collectAndValidateCoreTargetsFactory -} = require('@/modules/serverinvites/services/coreResourceCollection') -const { - buildCoreInviteEmailContentsFactory -} = require('@/modules/serverinvites/services/coreEmailContents') -const { getEventBus } = require('@/modules/shared/services/eventBus') -const { saveActivityFactory } = require('@/modules/activitystream/repositories') -const { publish } = require('@/modules/shared/utils/subscriptions') -const { +} from '@/modules/serverinvites/repositories/serverInvites' +import { collectAndValidateCoreTargetsFactory } from '@/modules/serverinvites/services/coreResourceCollection' +import { buildCoreInviteEmailContentsFactory } from '@/modules/serverinvites/services/coreEmailContents' +import { getEventBus } from '@/modules/shared/services/eventBus' +import { saveActivityFactory } from '@/modules/activitystream/repositories' +import { publish } from '@/modules/shared/utils/subscriptions' +import { getUsersFactory, getUserFactory, storeUserFactory, countAdminUsersFactory, storeUserAclFactory -} = require('@/modules/core/repositories/users') -const { +} from '@/modules/core/repositories/users' +import { findEmailFactory, createUserEmailFactory, ensureNoPrimaryEmailForUserFactory -} = require('@/modules/core/repositories/userEmails') -const { - requestNewEmailVerificationFactory -} = require('@/modules/emails/services/verification/request') -const { - deleteOldAndInsertNewVerificationFactory -} = require('@/modules/emails/repositories') -const { renderEmail } = require('@/modules/emails/services/emailRendering') -const { sendEmail } = require('@/modules/emails/services/sending') -const { createUserFactory } = require('@/modules/core/services/users/management') -const { - validateAndCreateUserEmailFactory -} = require('@/modules/core/services/userEmails') -const { - finalizeInvitedServerRegistrationFactory -} = require('@/modules/serverinvites/services/processing') -const { getServerInfoFactory } = require('@/modules/core/repositories/server') -const { +} from '@/modules/core/repositories/userEmails' +import { requestNewEmailVerificationFactory } from '@/modules/emails/services/verification/request' +import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' +import { renderEmail } from '@/modules/emails/services/emailRendering' +import { sendEmail } from '@/modules/emails/services/sending' +import { createUserFactory } from '@/modules/core/services/users/management' +import { validateAndCreateUserEmailFactory } from '@/modules/core/services/userEmails' +import { finalizeInvitedServerRegistrationFactory } from '@/modules/serverinvites/services/processing' +import { getServerInfoFactory } from '@/modules/core/repositories/server' +import { getBranchCommitsTotalCountByNameFactory, getPaginatedBranchCommitsItemsByNameFactory -} = require('@/modules/core/services/commit/retrieval') -const { createObjectFactory } = require('@/modules/core/services/objects/management') -const { - addBranchCreatedActivityFactory -} = require('@/modules/activitystream/services/branchActivity') +} from '@/modules/core/services/commit/retrieval' +import { createObjectFactory } from '@/modules/core/services/objects/management' +import { addBranchCreatedActivityFactory } from '@/modules/activitystream/services/branchActivity' +import { ensureError } from '@speckle/shared' +import { VersionEvents } from '@/modules/core/domain/commits/events' const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) @@ -150,7 +131,7 @@ const createCommitByBranchId = createCommitByBranchIdFactory({ insertBranchCommits: insertBranchCommitsFactory({ db }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db }), - versionsEventEmitter: VersionsEmitter.emit, + emitEvent: getEventBus().emit, addCommitCreatedActivity: addCommitCreatedActivityFactory({ saveActivity: saveActivityFactory({ db }), publish @@ -254,12 +235,14 @@ describe('Commits @core-commits', () => { const user = { name: 'Dimitrie Stefanescu', email: 'didimitrie4342@gmail.com', - password: 'sn3aky-1337-b1m' + password: 'sn3aky-1337-b1m', + id: '' } const stream = { name: 'Test Stream References', - description: 'Whatever goes in here usually...' + description: 'Whatever goes in here usually...', + id: '' } const testObject = { @@ -277,12 +260,14 @@ describe('Commits @core-commits', () => { baz: 'qux5' } + let quitters: (() => void)[] = [] + const generateObject = async (streamId = stream.id, object = testObject) => await createObject({ streamId, object }) const generateStream = async (streamBase = stream, ownerId = user.id) => await createStream({ ...streamBase, ownerId }) - let commitId1, commitId2, commitId3 + let commitId1: string, commitId2: string, commitId3: string before(async () => { await beforeEachContext() @@ -336,19 +321,35 @@ describe('Commits @core-commits', () => { ).id }) + afterEach(() => { + quitters.forEach((quit) => quit()) + quitters = [] + }) + it('Should create a commit by branch name', async () => { + const msg = 'first commit ive ever done, yes sir' + + let eventFired = false + quitters.push( + getEventBus().listen(VersionEvents.Created, ({ payload }) => { + expect(payload.version.message).to.equal(msg) + eventFired = true + }) + ) + const objectId = await generateObject() const id = ( await createCommitByBranchName({ streamId: stream.id, branchName: 'main', - message: 'first commit', + message: msg, sourceApplication: 'tests', objectId, authorId: user.id }) ).id expect(id).to.be.a.string + expect(eventFired).to.be.true }) // support SKDs not being able to handle the fe1 - fe2 link transition @@ -386,7 +387,9 @@ describe('Commits @core-commits', () => { ).id expect(id).null } catch (error) { - expect(error.message).contains('Failed to find branch with name or id') + expect(ensureError(error).message).contains( + 'Failed to find branch with name or id' + ) } }) @@ -453,15 +456,15 @@ describe('Commits @core-commits', () => { it('Should get a commit by id', async () => { const cm = await getCommit(commitId1, { streamId: stream.id }) - expect(cm.message).to.equal('FIRST COMMIT YOOOOOO') - expect(cm.author).to.equal(user.id) + expect(cm!.message).to.equal('FIRST COMMIT YOOOOOO') + expect(cm!.author).to.equal(user.id) }) it('Should get the commits and their total count from a branch', async () => { const streamId = await generateStream() for (let i = 0; i < 10; i++) { - const t = { qux: i } + const t = { qux: i, id: '' } t.id = await createObject({ streamId, object: t }) await createCommitByBranchName({ streamId, @@ -498,10 +501,15 @@ describe('Commits @core-commits', () => { it('Should get the commits and their total count from a stream', async () => { const streamId = await generateStream() - await createBranch({ name: 'dim/dev', streamId, authorId: user.id }) + await createBranch({ + name: 'dim/dev', + streamId, + authorId: user.id, + description: null + }) for (let i = 0; i < 15; i++) { - const t = { thud: i } + const t = { thud: i, id: '' } t.id = await createObject({ streamId, object: t }) await createCommitByBranchName({ streamId, @@ -562,18 +570,18 @@ describe('Commits @core-commits', () => { for (const commit of [serverCommit, branchCommit, idCommit]) { expect(commit).to.have.property('sourceApplication') - expect(commit.sourceApplication).to.be.a('string') + expect(commit!.sourceApplication).to.be.a('string') expect(commit).to.have.property('totalChildrenCount') - expect(commit.totalChildrenCount).to.be.a('number') + expect(commit!.totalChildrenCount).to.be.a('number') expect(commit).to.have.property('parents') - expect(commit.streamId).to.equal(stream.id) + expect(commit!.streamId).to.equal(stream.id) } - expect(idCommit.parents).to.be.a('array') - expect(idCommit.parents.length).to.equal(2) - expect(idCommit.streamId).to.equal(stream.id) + expect(idCommit!.parents).to.be.a('array') + expect(idCommit!.parents!.length).to.equal(2) + expect(idCommit!.streamId).to.equal(stream.id) }) it('Should have an array of parents', async () => { @@ -584,8 +592,8 @@ describe('Commits @core-commits', () => { for (const commit of commits) { expect(commit).to.have.property('parents') - expect(commit.parents).to.be.a('array') - expect(commit.parents.length).to.greaterThan(0) + expect(commit!.parents).to.be.a('array') + expect(commit!.parents!.length).to.greaterThan(0) } }) }) diff --git a/packages/server/modules/core/tests/streams.spec.ts b/packages/server/modules/core/tests/streams.spec.ts index b3fcad164..c8179c9d7 100644 --- a/packages/server/modules/core/tests/streams.spec.ts +++ b/packages/server/modules/core/tests/streams.spec.ts @@ -59,7 +59,6 @@ import { insertBranchCommitsFactory, insertStreamCommitsFactory } from '@/modules/core/repositories/commits' -import { VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { addCommitCreatedActivityFactory } from '@/modules/activitystream/services/commitActivity' import { getObjectFactory, @@ -132,7 +131,7 @@ const createCommitByBranchId = createCommitByBranchIdFactory({ insertBranchCommits: insertBranchCommitsFactory({ db }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db }), - versionsEventEmitter: VersionsEmitter.emit, + emitEvent: getEventBus().emit, addCommitCreatedActivity: addCommitCreatedActivityFactory({ saveActivity: saveActivityFactory({ db }), publish diff --git a/packages/server/modules/core/tests/users.spec.ts b/packages/server/modules/core/tests/users.spec.ts index 681519147..2c7893ac4 100644 --- a/packages/server/modules/core/tests/users.spec.ts +++ b/packages/server/modules/core/tests/users.spec.ts @@ -39,7 +39,6 @@ import { deleteStreamFactory, getUserDeletableStreamsFactory } from '@/modules/core/repositories/streams' -import { VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { getObjectFactory, storeSingleObjectIfNotFoundFactory, @@ -138,7 +137,7 @@ const createCommitByBranchId = createCommitByBranchIdFactory({ insertBranchCommits: insertBranchCommitsFactory({ db }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db }), - versionsEventEmitter: VersionsEmitter.emit, + emitEvent: getEventBus().emit, addCommitCreatedActivity: addCommitCreatedActivityFactory({ saveActivity: saveActivityFactory({ db }), publish diff --git a/packages/server/modules/cross-server-sync/index.ts b/packages/server/modules/cross-server-sync/index.ts index e1c3b8ad6..c7d09c00c 100644 --- a/packages/server/modules/cross-server-sync/index.ts +++ b/packages/server/modules/cross-server-sync/index.ts @@ -22,7 +22,6 @@ import { createCommentReplyAndNotifyFactory, createCommentThreadAndNotifyFactory } from '@/modules/comments/services/management' -import { VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { createBranchFactory, getBranchByIdFactory, @@ -156,7 +155,7 @@ const crossServerSyncModule: SpeckleModule = { insertBranchCommits: insertBranchCommitsFactory({ db }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db }), - versionsEventEmitter: VersionsEmitter.emit, + emitEvent: getEventBus().emit, addCommitCreatedActivity: addCommitCreatedActivityFactory({ saveActivity: saveActivityFactory({ db }), publish diff --git a/packages/server/modules/shared/services/eventBus.ts b/packages/server/modules/shared/services/eventBus.ts index 1d7cc3b86..06aeb595a 100644 --- a/packages/server/modules/shared/services/eventBus.ts +++ b/packages/server/modules/shared/services/eventBus.ts @@ -27,6 +27,10 @@ import { userEventsNamespace, UserEventsPayloads } from '@/modules/core/domain/users/events' +import { + versionEventsNamespace, + VersionEventsPayloads +} from '@/modules/core/domain/commits/events' type AllEventsWildcard = '**' type EventWildcard = '*' @@ -50,6 +54,7 @@ type EventsByNamespace = { [modelEventsNamespace]: ModelEventsPayloads [projectEventsNamespace]: ProjectEventsPayloads [userEventsNamespace]: UserEventsPayloads + [versionEventsNamespace]: VersionEventsPayloads } type EventTypes = UnionToIntersection diff --git a/packages/server/modules/stats/tests/stats.spec.ts b/packages/server/modules/stats/tests/stats.spec.ts index e89aa4ef0..f0fd0c17b 100644 --- a/packages/server/modules/stats/tests/stats.spec.ts +++ b/packages/server/modules/stats/tests/stats.spec.ts @@ -30,7 +30,6 @@ import { getStreamFactory, markCommitStreamUpdatedFactory } from '@/modules/core/repositories/streams' -import { VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { getObjectFactory, storeClosuresIfNotFoundFactory, @@ -95,7 +94,7 @@ const createCommitByBranchId = createCommitByBranchIdFactory({ insertBranchCommits: insertBranchCommitsFactory({ db }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db }), - versionsEventEmitter: VersionsEmitter.emit, + emitEvent: getEventBus().emit, addCommitCreatedActivity: addCommitCreatedActivityFactory({ saveActivity: saveActivityFactory({ db }), publish diff --git a/packages/server/test/speckle-helpers/commitHelper.ts b/packages/server/test/speckle-helpers/commitHelper.ts index 87b4e4f01..3655623ac 100644 --- a/packages/server/test/speckle-helpers/commitHelper.ts +++ b/packages/server/test/speckle-helpers/commitHelper.ts @@ -1,7 +1,6 @@ import { db } from '@/db/knex' import { saveActivityFactory } from '@/modules/activitystream/repositories' import { addCommitCreatedActivityFactory } from '@/modules/activitystream/services/commitActivity' -import { VersionsEmitter } from '@/modules/core/events/versionsEmitter' import { getBranchByIdFactory, getStreamBranchByNameFactory, @@ -24,6 +23,7 @@ import { } from '@/modules/core/services/commit/management' import { createObjectFactory } from '@/modules/core/services/objects/management' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' +import { getEventBus } from '@/modules/shared/services/eventBus' import { publish } from '@/modules/shared/utils/subscriptions' import { BasicTestUser } from '@/test/authHelper' import { BasicTestStream } from '@/test/speckle-helpers/streamHelper' @@ -126,7 +126,7 @@ export async function createTestCommits( insertBranchCommits: insertBranchCommitsFactory({ db: projectDb }), markCommitStreamUpdated, markCommitBranchUpdated: markCommitBranchUpdatedFactory({ db: projectDb }), - versionsEventEmitter: VersionsEmitter.emit, + emitEvent: getEventBus().emit, addCommitCreatedActivity: addCommitCreatedActivityFactory({ saveActivity: saveActivityFactory({ db }), publish