diff --git a/packages/apps-engine/src/definition/version.ts b/packages/apps-engine/src/definition/version.ts deleted file mode 100644 index 8feda95c5ad5d..0000000000000 --- a/packages/apps-engine/src/definition/version.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * The version of the Apps-Engine package. - * Consumed by host-side code (e.g. AppPackageParser) to validate app compatibility - * without relying on filesystem path traversal. - * - * Uses require() instead of a static import so TypeScript does not resolve the path - * at compile time. - * - * When running for tests, using ts-node, package.json is located two levels above the current file. - * When running in production, package.json is located one level above the compiled version of this file. - */ -const runningFromSource = __dirname.endsWith('src/definition'); -const requirePath = runningFromSource ? '../../package.json' : '../package.json'; - -// eslint-disable-next-line import/no-dynamic-require, @typescript-eslint/no-require-imports -- Paths are bounded, we just need to decide which package.json file to target -export const ENGINE_VERSION: string = require(requirePath).version; diff --git a/packages/apps/src/server/compiler/AppPackageParser.ts b/packages/apps/src/server/compiler/AppPackageParser.ts index 827f7d2208b0d..233cf2971056f 100644 --- a/packages/apps/src/server/compiler/AppPackageParser.ts +++ b/packages/apps/src/server/compiler/AppPackageParser.ts @@ -2,7 +2,7 @@ import { randomUUID } from 'node:crypto'; import * as path from 'node:path'; import type { IAppInfo } from '@rocket.chat/apps-engine/definition/metadata/IAppInfo'; -import { ENGINE_VERSION } from '@rocket.chat/apps-engine/definition/version'; +import { version } from '@rocket.chat/apps-engine/package.json'; import AdmZip from 'adm-zip'; import * as semver from 'semver'; @@ -15,7 +15,11 @@ export class AppPackageParser { private allowedIconExts: Array = ['.png', '.jpg', '.jpeg', '.gif']; - private appsEngineVersion: string = ENGINE_VERSION; + private readonly appsEngineVersion: string; + + constructor() { + [this.appsEngineVersion] = version.split('-'); // In case there is a suffix like -dev, -rc.0, etc. We just want the version number for semver comparison + } public async unpackageApp(appPackage: Buffer): Promise { const zip = new AdmZip(appPackage);