forked from orbit-oss/is
Fix is.class for minified class expression (#217)
This commit is contained in:
parent
d22ab62991
commit
e7c84fcb79
2 changed files with 5 additions and 1 deletions
|
|
@ -418,7 +418,7 @@ export function isBuffer(value: unknown): value is NodeBuffer {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isClass<T = unknown>(value: unknown): value is Class<T> {
|
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 {
|
export function isDataView(value: unknown): value is DataView {
|
||||||
|
|
|
||||||
|
|
@ -1086,9 +1086,13 @@ test('is.asyncIterable', t => {
|
||||||
test('is.class', t => {
|
test('is.class', t => {
|
||||||
class Foo {} // eslint-disable-line @typescript-eslint/no-extraneous-class
|
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 = [
|
const classDeclarations = [
|
||||||
Foo,
|
Foo,
|
||||||
class Bar extends Foo {},
|
class Bar extends Foo {},
|
||||||
|
minifiedClass(),
|
||||||
];
|
];
|
||||||
|
|
||||||
for (const classDeclaration of classDeclarations) {
|
for (const classDeclaration of classDeclarations) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue