diff --git a/package-lock.json b/package-lock.json index 89d322f6..fbc09d12 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8766,10 +8766,10 @@ }, "packages/code-analyzer-core": { "name": "@salesforce/code-analyzer-core", - "version": "0.35.0", + "version": "0.36.0-SNAPSHOT", "license": "BSD-3-Clause", "dependencies": { - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@types/node": "^20.0.0", "csv-stringify": "^6.6.0", "js-yaml": "^4.1.0", @@ -9028,7 +9028,7 @@ }, "packages/code-analyzer-engine-api": { "name": "@salesforce/code-analyzer-engine-api", - "version": "0.29.0", + "version": "0.30.0-SNAPSHOT", "license": "BSD-3-Clause", "dependencies": { "@types/node": "^20.0.0" @@ -9279,15 +9279,15 @@ }, "packages/code-analyzer-eslint-engine": { "name": "@salesforce/code-analyzer-eslint-engine", - "version": "0.31.0", + "version": "0.32.0-SNAPSHOT", "license": "BSD-3-Clause", "dependencies": { "@eslint/js": "^9.35.0", "@lwc/eslint-plugin-lwc": "^3.2.0", "@lwc/eslint-plugin-lwc-platform": "^6.1.0", "@salesforce-ux/eslint-plugin-slds": "^0.5.3", - "@salesforce/code-analyzer-engine-api": "0.29.0", - "@salesforce/code-analyzer-eslint8-engine": "0.6.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", + "@salesforce/code-analyzer-eslint8-engine": "0.7.0-SNAPSHOT", "@salesforce/eslint-config-lwc": "^4.0.0", "@salesforce/eslint-plugin-lightning": "^2.0.0", "@types/node": "^20.0.0", @@ -9825,7 +9825,7 @@ }, "packages/code-analyzer-eslint8-engine": { "name": "@salesforce/code-analyzer-eslint8-engine", - "version": "0.6.0", + "version": "0.7.0-SNAPSHOT", "license": "BSD-3-Clause", "dependencies": { "@babel/core": "7.27.4", @@ -9833,7 +9833,7 @@ "@eslint/js": "8.57.1", "@lwc/eslint-plugin-lwc": "2.2.0", "@lwc/eslint-plugin-lwc-platform": "5.2.0", - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@salesforce/eslint-config-lwc": "3.7.2", "@salesforce/eslint-plugin-lightning": "1.0.1", "@types/node": "^20.0.0", @@ -10225,10 +10225,10 @@ }, "packages/code-analyzer-flow-engine": { "name": "@salesforce/code-analyzer-flow-engine", - "version": "0.26.0", + "version": "0.27.0-SNAPSHOT", "license": "BSD-3-Clause", "dependencies": { - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@types/node": "^20.0.0", "@types/semver": "^7.7.1", "semver": "^7.7.2" @@ -10479,10 +10479,10 @@ }, "packages/code-analyzer-pmd-engine": { "name": "@salesforce/code-analyzer-pmd-engine", - "version": "0.30.0", + "version": "0.31.0-SNAPSHOT", "license": "BSD-3-Clause", "dependencies": { - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@types/node": "^20.0.0", "@types/semver": "^7.7.1", "semver": "^7.7.2" @@ -10733,10 +10733,10 @@ }, "packages/code-analyzer-regex-engine": { "name": "@salesforce/code-analyzer-regex-engine", - "version": "0.27.0", + "version": "0.28.0-SNAPSHOT", "license": "BSD-3-Clause", "dependencies": { - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@types/node": "^20.0.0", "isbinaryfile": "^5.0.4", "p-limit": "^3.1.0" @@ -10987,10 +10987,10 @@ }, "packages/code-analyzer-retirejs-engine": { "name": "@salesforce/code-analyzer-retirejs-engine", - "version": "0.26.0", + "version": "0.27.0-SNAPSHOT", "license": "BSD-3-Clause", "dependencies": { - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@types/node": "^20.0.0", "isbinaryfile": "^5.0.6", "node-stream-zip": "^1.15.0", @@ -11242,10 +11242,10 @@ }, "packages/code-analyzer-sfge-engine": { "name": "@salesforce/code-analyzer-sfge-engine", - "version": "0.12.0", + "version": "0.13.0-SNAPSHOT", "license": "BSD-3-Clause", "dependencies": { - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@types/node": "^20.0.0", "semver": "^7.7.2" }, @@ -11499,7 +11499,7 @@ "version": "0.1.0-SNAPSHOT", "license": "BSD-3-Clause", "dependencies": { - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@types/node": "^20.0.0" }, "devDependencies": { diff --git a/packages/ENGINE-TEMPLATE/package.json b/packages/ENGINE-TEMPLATE/package.json index d06c194d..1132ec96 100644 --- a/packages/ENGINE-TEMPLATE/package.json +++ b/packages/ENGINE-TEMPLATE/package.json @@ -14,7 +14,7 @@ "types": "dist/index.d.ts", "dependencies": { "@types/node": "^20.0.0", - "@salesforce/code-analyzer-engine-api": "0.29.0" + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT" }, "devDependencies": { "@eslint/js": "^9.35.0", diff --git a/packages/code-analyzer-core/package.json b/packages/code-analyzer-core/package.json index f1b986c4..25962027 100644 --- a/packages/code-analyzer-core/package.json +++ b/packages/code-analyzer-core/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/code-analyzer-core", "description": "Core Package for the Salesforce Code Analyzer", - "version": "0.35.0", + "version": "0.36.0-SNAPSHOT", "author": "The Salesforce Code Analyzer Team", "license": "BSD-3-Clause", "homepage": "https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/overview", @@ -16,7 +16,7 @@ }, "types": "dist/index.d.ts", "dependencies": { - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@types/node": "^20.0.0", "csv-stringify": "^6.6.0", "js-yaml": "^4.1.0", diff --git a/packages/code-analyzer-engine-api/package.json b/packages/code-analyzer-engine-api/package.json index 867b4728..1e6eb05e 100644 --- a/packages/code-analyzer-engine-api/package.json +++ b/packages/code-analyzer-engine-api/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/code-analyzer-engine-api", "description": "Engine API Package for the Salesforce Code Analyzer", - "version": "0.29.0", + "version": "0.30.0-SNAPSHOT", "author": "The Salesforce Code Analyzer Team", "license": "BSD-3-Clause", "homepage": "https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/overview", diff --git a/packages/code-analyzer-engine-api/src/engines.ts b/packages/code-analyzer-engine-api/src/engines.ts index 19cf03cb..7de4d38f 100644 --- a/packages/code-analyzer-engine-api/src/engines.ts +++ b/packages/code-analyzer-engine-api/src/engines.ts @@ -79,6 +79,15 @@ export abstract class EngineEventEmitter { this.eventEmitter.on(eventType, callback); } + /** + * Remove a listener callback from one of the events that the engine may directly emit + * @param eventType The {@link EventType} that you would like to add a callback for + * @param callback The callback function that should be invoked when an associated event is emitted + */ + public removeEventListener(eventType: T["type"], callback: (event: T) => void): void { + this.eventEmitter.off(eventType, callback); + } + /** * Method that subclasses can use to emit any {@link Event}. * @param event the {@link Event} instance diff --git a/packages/code-analyzer-engine-api/test/api-v1.test.ts b/packages/code-analyzer-engine-api/test/api-v1.test.ts index bd55bfac..08fa5707 100644 --- a/packages/code-analyzer-engine-api/test/api-v1.test.ts +++ b/packages/code-analyzer-engine-api/test/api-v1.test.ts @@ -111,6 +111,32 @@ describe('Tests for v1', () => { percentComplete: 100.0 }); }); + + it('Engine removeEventListener should properly remove an event listener that was previously added by onEvent', async () => { + const dummyPlugin: EnginePluginV1 = new DummyEnginePluginV1(); + const dummyEngine: Engine = await dummyPlugin.createEngine('dummy', {}); + const workspace: Workspace = new Workspace('id', []); + + const sampleEventListener = (event: LogEvent): void => { + logEvents.push(event); + }; + + const logEvents: LogEvent[] = []; + dummyEngine.onEvent(EventType.LogEvent, sampleEventListener); + + // First confirm that each call to describeRules emits an event + await dummyEngine.describeRules(createDescribeOptions(workspace)); + expect(logEvents).toHaveLength(1); + await dummyEngine.describeRules(createDescribeOptions(workspace)); + expect(logEvents).toHaveLength(2); + + // Now confirm that after we remove the listener, the event no longer is listened to + dummyEngine.removeEventListener(EventType.LogEvent, sampleEventListener); + await dummyEngine.describeRules(createDescribeOptions(workspace)); + expect(logEvents).toHaveLength(2); // Should still be at 2 + await dummyEngine.describeRules(createDescribeOptions(workspace)); + expect(logEvents).toHaveLength(2); // Sanity check, and yet it is still at 2 + }); }); diff --git a/packages/code-analyzer-eslint-engine/package.json b/packages/code-analyzer-eslint-engine/package.json index 986e3169..8089620a 100644 --- a/packages/code-analyzer-eslint-engine/package.json +++ b/packages/code-analyzer-eslint-engine/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/code-analyzer-eslint-engine", "description": "Plugin package that adds 'eslint' as an engine into Salesforce Code Analyzer", - "version": "0.31.0", + "version": "0.32.0-SNAPSHOT", "author": "The Salesforce Code Analyzer Team", "license": "BSD-3-Clause", "homepage": "https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/overview", @@ -17,8 +17,8 @@ "@lwc/eslint-plugin-lwc": "^3.2.0", "@lwc/eslint-plugin-lwc-platform": "^6.1.0", "@salesforce-ux/eslint-plugin-slds": "^0.5.3", - "@salesforce/code-analyzer-engine-api": "0.29.0", - "@salesforce/code-analyzer-eslint8-engine": "0.6.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", + "@salesforce/code-analyzer-eslint8-engine": "0.7.0-SNAPSHOT", "@salesforce/eslint-config-lwc": "^4.0.0", "@salesforce/eslint-plugin-lightning": "^2.0.0", "@types/node": "^20.0.0", diff --git a/packages/code-analyzer-eslint8-engine/package.json b/packages/code-analyzer-eslint8-engine/package.json index 0e764915..cf1ea4e2 100644 --- a/packages/code-analyzer-eslint8-engine/package.json +++ b/packages/code-analyzer-eslint8-engine/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/code-analyzer-eslint8-engine", "description": "Plugin package that adds 'eslint' (version 8) as an engine into Salesforce Code Analyzer", - "version": "0.6.0", + "version": "0.7.0-SNAPSHOT", "author": "The Salesforce Code Analyzer Team", "license": "BSD-3-Clause", "homepage": "https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/overview", @@ -18,7 +18,7 @@ "@eslint/js": "8.57.1", "@lwc/eslint-plugin-lwc": "2.2.0", "@lwc/eslint-plugin-lwc-platform": "5.2.0", - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@salesforce/eslint-config-lwc": "3.7.2", "@salesforce/eslint-plugin-lightning": "1.0.1", "@types/node": "^20.0.0", diff --git a/packages/code-analyzer-flow-engine/package.json b/packages/code-analyzer-flow-engine/package.json index 416e18da..442a2a45 100644 --- a/packages/code-analyzer-flow-engine/package.json +++ b/packages/code-analyzer-flow-engine/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/code-analyzer-flow-engine", "description": "Plugin package that adds 'Flow Scanner' as an engine into Salesforce Code Analyzer", - "version": "0.26.0", + "version": "0.27.0-SNAPSHOT", "author": "The Salesforce Code Analyzer Team", "license": "BSD-3-Clause", "homepage": "https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/overview", @@ -13,7 +13,7 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "dependencies": { - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@types/node": "^20.0.0", "@types/semver": "^7.7.1", "semver": "^7.7.2" diff --git a/packages/code-analyzer-pmd-engine/package.json b/packages/code-analyzer-pmd-engine/package.json index 072b3ae4..885ffcea 100644 --- a/packages/code-analyzer-pmd-engine/package.json +++ b/packages/code-analyzer-pmd-engine/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/code-analyzer-pmd-engine", "description": "Plugin package that adds 'pmd' and 'cpd' as engines into Salesforce Code Analyzer", - "version": "0.30.0", + "version": "0.31.0-SNAPSHOT", "author": "The Salesforce Code Analyzer Team", "license": "BSD-3-Clause", "homepage": "https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/overview", @@ -13,7 +13,7 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "dependencies": { - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@types/node": "^20.0.0", "@types/semver": "^7.7.1", "semver": "^7.7.2" diff --git a/packages/code-analyzer-regex-engine/package.json b/packages/code-analyzer-regex-engine/package.json index 10de9090..ced8fa47 100644 --- a/packages/code-analyzer-regex-engine/package.json +++ b/packages/code-analyzer-regex-engine/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/code-analyzer-regex-engine", "description": "Plugin package that adds 'regex' as an engine into Salesforce Code Analyzer", - "version": "0.27.0", + "version": "0.28.0-SNAPSHOT", "author": "The Salesforce Code Analyzer Team", "license": "BSD-3-Clause", "homepage": "https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/overview", @@ -13,7 +13,7 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "dependencies": { - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@types/node": "^20.0.0", "isbinaryfile": "^5.0.4", "p-limit": "^3.1.0" diff --git a/packages/code-analyzer-retirejs-engine/package.json b/packages/code-analyzer-retirejs-engine/package.json index 715737f8..521a533b 100644 --- a/packages/code-analyzer-retirejs-engine/package.json +++ b/packages/code-analyzer-retirejs-engine/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/code-analyzer-retirejs-engine", "description": "Plugin package that adds 'retire-js' as an engine into Salesforce Code Analyzer", - "version": "0.26.0", + "version": "0.27.0-SNAPSHOT", "author": "The Salesforce Code Analyzer Team", "license": "BSD-3-Clause", "homepage": "https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/overview", @@ -13,7 +13,7 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "dependencies": { - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@types/node": "^20.0.0", "isbinaryfile": "^5.0.6", "node-stream-zip": "^1.15.0", diff --git a/packages/code-analyzer-sfge-engine/package.json b/packages/code-analyzer-sfge-engine/package.json index 3938b587..1e3963de 100644 --- a/packages/code-analyzer-sfge-engine/package.json +++ b/packages/code-analyzer-sfge-engine/package.json @@ -1,7 +1,7 @@ { "name": "@salesforce/code-analyzer-sfge-engine", "description": "Plugin package that adds 'Salesforce Graph Engine' as an engine into Salesforce Code Analyzer", - "version": "0.12.0", + "version": "0.13.0-SNAPSHOT", "author": "The Salesforce Code Analyzer Team", "license": "BSD-3-Clause", "homepage": "https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/overview", @@ -13,7 +13,7 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "dependencies": { - "@salesforce/code-analyzer-engine-api": "0.29.0", + "@salesforce/code-analyzer-engine-api": "0.30.0-SNAPSHOT", "@types/node": "^20.0.0", "semver": "^7.7.2" },