From 0aa373b5eb1b2d243ce7d84a2af2cf724c2c6248 Mon Sep 17 00:00:00 2001 From: Asherah Connor <asherah@hrzn.ee> Date: Tue, 16 Aug 2022 12:08:51 +1000 Subject: [PATCH] fix(core): isNodeSelection, isTextSelection not always false Fixes #2979. Since the ProseMirror TypeScript upgrade, these have always returned false, since the Selection type tree are all classes now. --- packages/core/src/helpers/isNodeSelection.ts | 4 +--- packages/core/src/helpers/isTextSelection.ts | 4 +--- packages/core/src/utilities/isClass.ts | 7 ------- packages/core/src/utilities/isObject.ts | 10 ---------- .../cypress/integration/core/isClass.spec.ts | 19 ------------------- 5 files changed, 2 insertions(+), 42 deletions(-) delete mode 100644 packages/core/src/utilities/isClass.ts delete mode 100644 packages/core/src/utilities/isObject.ts delete mode 100644 tests/cypress/integration/core/isClass.spec.ts diff --git a/packages/core/src/helpers/isNodeSelection.ts b/packages/core/src/helpers/isNodeSelection.ts index 07ea50feae..cb40e62bd2 100644 --- a/packages/core/src/helpers/isNodeSelection.ts +++ b/packages/core/src/helpers/isNodeSelection.ts @@ -1,7 +1,5 @@ import { NodeSelection } from 'prosemirror-state' -import { isObject } from '../utilities/isObject' - export function isNodeSelection(value: unknown): value is NodeSelection { - return isObject(value) && value instanceof NodeSelection + return value instanceof NodeSelection } diff --git a/packages/core/src/helpers/isTextSelection.ts b/packages/core/src/helpers/isTextSelection.ts index 6724426cad..8d3ecd8a4a 100644 --- a/packages/core/src/helpers/isTextSelection.ts +++ b/packages/core/src/helpers/isTextSelection.ts @@ -1,7 +1,5 @@ import { TextSelection } from 'prosemirror-state' -import { isObject } from '../utilities/isObject' - export function isTextSelection(value: unknown): value is TextSelection { - return isObject(value) && value instanceof TextSelection + return value instanceof TextSelection } diff --git a/packages/core/src/utilities/isClass.ts b/packages/core/src/utilities/isClass.ts deleted file mode 100644 index 925fabd7d7..0000000000 --- a/packages/core/src/utilities/isClass.ts +++ /dev/null @@ -1,7 +0,0 @@ -export function isClass(value: any): boolean { - if (value.constructor?.toString().substring(0, 5) !== 'class') { - return false - } - - return true -} diff --git a/packages/core/src/utilities/isObject.ts b/packages/core/src/utilities/isObject.ts deleted file mode 100644 index a5a17b6581..0000000000 --- a/packages/core/src/utilities/isObject.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { isClass } from './isClass' - -export function isObject(value: any): boolean { - return ( - value - && typeof value === 'object' - && !Array.isArray(value) - && !isClass(value) - ) -} diff --git a/tests/cypress/integration/core/isClass.spec.ts b/tests/cypress/integration/core/isClass.spec.ts deleted file mode 100644 index d7f09c8f9b..0000000000 --- a/tests/cypress/integration/core/isClass.spec.ts +++ /dev/null @@ -1,19 +0,0 @@ -/// <reference types="cypress" /> - -import { isClass } from '@tiptap/core/src/utilities/isClass' - -describe('isClass', () => { - it('returns true for classes', () => { - const instance = new (class { - public foo = 'bar' - })() - - expect(isClass(instance)).to.eq(true) - }) - - it('return false for objects', () => { - const instance = {} - - expect(isClass(instance)).to.eq(false) - }) -})