diff --git a/.changeset/loud-adults-sparkle.md b/.changeset/loud-adults-sparkle.md new file mode 100644 index 0000000000..4bd82ad4e8 --- /dev/null +++ b/.changeset/loud-adults-sparkle.md @@ -0,0 +1,6 @@ +--- +"@ima/hmr-client": patch +"@ima/server": patch +--- + +`@esmj/emitter` dependency updated. diff --git a/.changeset/sour-glasses-travel.md b/.changeset/sour-glasses-travel.md new file mode 100644 index 0000000000..0d5cb57644 --- /dev/null +++ b/.changeset/sour-glasses-travel.md @@ -0,0 +1,5 @@ +--- +"@ima/server": minor +--- + +Added new `AfterResponseSend` event. diff --git a/package-lock.json b/package-lock.json index 89ec9d8f3e..e3a0036a49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5135,9 +5135,10 @@ } }, "node_modules/@esmj/emitter": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@esmj/emitter/-/emitter-0.3.1.tgz", - "integrity": "sha512-AM25ozFXOZ0C9j0uk2OSYRWSPHJZh47wOSQcN1874mJ+oG52eC0cWE9MWUCWQ0A13d4D7x5ezNxep+iOJeXnxQ==" + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@esmj/emitter/-/emitter-0.4.3.tgz", + "integrity": "sha512-uSs89QF46RHA3j9JfuItDpB0TO9A13rxzSG9kETC3aSxLWlpFEEmLLC1Eitn0A7gYSqSzSOgX8KtqDkfDo60xg==", + "license": "MIT" }, "node_modules/@esmj/monitor": { "version": "0.5.3", @@ -38050,7 +38051,7 @@ "version": "19.0.0", "license": "MIT", "dependencies": { - "@esmj/emitter": "^0.3.0" + "@esmj/emitter": "^0.4.3" }, "devDependencies": { "@types/webpack-env": "^1.16.3" @@ -38191,7 +38192,7 @@ "version": "19.4.3", "license": "MIT", "dependencies": { - "@esmj/emitter": "^0.3.0", + "@esmj/emitter": "^0.4.3", "@esmj/monitor": "^0.5.3", "chalk": "^4.1.2", "ejs": "^3.1.6", diff --git a/packages/hmr-client/package.json b/packages/hmr-client/package.json index 97ff74bb19..b51d4277cc 100644 --- a/packages/hmr-client/package.json +++ b/packages/hmr-client/package.json @@ -35,6 +35,6 @@ "webpack": "^5.70.0" }, "dependencies": { - "@esmj/emitter": "^0.3.0" + "@esmj/emitter": "^0.4.3" } } diff --git a/packages/server/lib/emitter.js b/packages/server/lib/emitter.js index eeae1a745c..553d4aef51 100644 --- a/packages/server/lib/emitter.js +++ b/packages/server/lib/emitter.js @@ -14,6 +14,7 @@ const Event = { BeforeResponse: 'ima.server.beforeResponse', Response: 'ima.server.response', AfterResponse: 'ima.server.afterResponse', + AfterResponseSend: 'ima.server.afterResponseSend', CreateBootConfig: 'ima.server.bootConfig', CreateImaApp: 'ima.server.createApp', diff --git a/packages/server/lib/factory/serverAppFactory.js b/packages/server/lib/factory/serverAppFactory.js index e210800b35..35a76d1074 100644 --- a/packages/server/lib/factory/serverAppFactory.js +++ b/packages/server/lib/factory/serverAppFactory.js @@ -156,6 +156,7 @@ module.exports = function serverAppFactory({ } event = await emitter.emit(Event.AfterResponse, event); + await emitter.emitParallel(Event.AfterResponseSend, event); return event; } @@ -205,6 +206,12 @@ module.exports = function serverAppFactory({ res.status(context.response.status); res.send(context.response.content); + + try { + await emitter.emitParallel(Event.AfterResponseSend, event); + } catch (error) { + logger.error('Error in AfterResponseSend', { error }); + } } return event.context.response; diff --git a/packages/server/package.json b/packages/server/package.json index bc40b64a52..e555ab9549 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -25,7 +25,7 @@ "test": "jest" }, "dependencies": { - "@esmj/emitter": "^0.3.0", + "@esmj/emitter": "^0.4.3", "@esmj/monitor": "^0.5.3", "chalk": "^4.1.2", "ejs": "^3.1.6", diff --git a/packages/server/types.d.ts b/packages/server/types.d.ts index 8a92aba009..f0fb7fba59 100644 --- a/packages/server/types.d.ts +++ b/packages/server/types.d.ts @@ -17,6 +17,7 @@ declare module '@ima/server' { BeforeResponse = 'ima.server.beforeResponse', Response = 'ima.server.response', AfterResponse = 'ima.server.afterResponse', + AfterResponseSend = 'ima.server.afterResponseSend', CreateBootConfig = 'ima.server.bootConfig', CreateImaApp = 'ima.server.createApp',