Fix is.class for minified class expression (#217)

This commit is contained in:
Tim Griesser 2025-10-31 13:18:25 -04:00 committed by GitHub
parent d22ab62991
commit e7c84fcb79
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 5 additions and 1 deletions

View file

@ -418,7 +418,7 @@ export function isBuffer(value: unknown): value is NodeBuffer {
}
export function isClass<T = unknown>(value: unknown): value is Class<T> {
return isFunction(value) && value.toString().startsWith('class ');
return isFunction(value) && /^class(\s+|{)/.test(value.toString());
}
export function isDataView(value: unknown): value is DataView {

View file

@ -1086,9 +1086,13 @@ test('is.asyncIterable', t => {
test('is.class', t => {
class Foo {} // eslint-disable-line @typescript-eslint/no-extraneous-class
// Note: Using new Function to prevent whitespace modifications in tsimp
const minifiedClass = new Function('return class{};'); // eslint-disable-line no-new-func
const classDeclarations = [
Foo,
class Bar extends Foo {},
minifiedClass(),
];
for (const classDeclaration of classDeclarations) {