From cecb63b372477cbcdd0cbfdc585c4c3cb702c228 Mon Sep 17 00:00:00 2001 From: KernelDeimos <7225168+KernelDeimos@users.noreply.github.com> Date: Tue, 17 Feb 2026 22:12:24 -0500 Subject: [PATCH] fix(backend): ESM/CJS interop is sad Fix ESM/CJS interop issue in unit tests with a hack that checks the class name as a string instead of just doing an `instanceof` check. This is assuming that the "rewriter must be a PermissionRewriter" error I'm seeing on GitHub is because there are two different "copies" of PermissionWriter due to ESM/CJS interop issues. If this is not the case, then you're not reading this commit message on `main`; if this commit is on `main` then that's exactly what went down. --- src/backend/src/services/auth/PermissionService.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/backend/src/services/auth/PermissionService.js b/src/backend/src/services/auth/PermissionService.js index 59ac6f56d..75b7f6e2d 100644 --- a/src/backend/src/services/auth/PermissionService.js +++ b/src/backend/src/services/auth/PermissionService.js @@ -1191,7 +1191,10 @@ class PermissionService extends BaseService { * @param {PermissionRewriter} rewriter - The permission rewriter to register */ register_rewriter (rewriter) { - if ( ! (rewriter instanceof PermissionRewriter) ) { + const is_permission_rewriter = rewriter instanceof PermissionRewriter + // Hack for ESM/CJS interop issue in unit tests. + || rewriter?.constructor?.name === 'PermissionRewriter'; + if ( ! is_permission_rewriter ) { throw new Error('rewriter must be a PermissionRewriter'); }