diff --git a/.eslintrc.js b/.eslintrc.js index 44e8122a..007700b6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -70,6 +70,8 @@ module.exports = { '@typescript-eslint/ban-types': 'off', '@typescript-eslint/comma-dangle': ['error', 'always-multiline'], '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-namespace': 'off', + 'no-undef': 'off', }, }, ], diff --git a/packages/core/src/CommandManager.ts b/packages/core/src/CommandManager.ts index b9fef148..8ac590f9 100644 --- a/packages/core/src/CommandManager.ts +++ b/packages/core/src/CommandManager.ts @@ -1,7 +1,5 @@ import { EditorState, Transaction } from 'prosemirror-state' import { - SingleCommands, - ChainedCommands, Editor, CommandSpec, } from './Editor' @@ -58,7 +56,7 @@ export default class CommandManager { } return [name, method] - })) as SingleCommands + })) as Tiptap.SingleCommands } public createChain(startTr?: Transaction, shouldDispatch = true) { @@ -92,7 +90,7 @@ export default class CommandManager { return proxy } }, - }) as ChainedCommands + }) as Tiptap.ChainedCommands } public createCan(startTr?: Transaction) { @@ -105,7 +103,7 @@ export default class CommandManager { .entries(commands) .map(([name, command]) => { return [name, (...args: any[]) => command(...args)({ ...props, dispatch })] - })) as SingleCommands + })) as Tiptap.SingleCommands return { ...formattedCommands, diff --git a/packages/core/src/Editor.ts b/packages/core/src/Editor.ts index f22cd5d1..efa0af64 100644 --- a/packages/core/src/Editor.ts +++ b/packages/core/src/Editor.ts @@ -24,9 +24,9 @@ import style from './style' export type Command = (props: { editor: Editor, tr: Transaction, - commands: SingleCommands, - can: () => SingleCommands & { chain: () => ChainedCommands }, - chain: () => ChainedCommands, + commands: Tiptap.SingleCommands, + can: () => Tiptap.SingleCommands & { chain: () => Tiptap.ChainedCommands }, + chain: () => Tiptap.ChainedCommands, state: EditorState, view: EditorView, dispatch: ((args?: any) => any) | undefined, @@ -38,35 +38,71 @@ export interface CommandsSpec { [key: string]: CommandSpec } -export interface AllExtensions {} +declare global { + namespace Tiptap { + export interface AllExtensions {} -export type UnfilteredCommands = { - [Item in keyof AllExtensions]: AllExtensions[Item] extends Extension - ? ExtensionCommands - : AllExtensions[Item] extends Node - ? NodeCommands - : AllExtensions[Item] extends Mark - ? MarkCommands - : never + export type UnfilteredCommands = { + [Item in keyof AllExtensions]: AllExtensions[Item] extends Extension + ? ExtensionCommands + : AllExtensions[Item] extends Node + ? NodeCommands + : AllExtensions[Item] extends Mark + ? MarkCommands + : never + } + + type ValuesOf = T[keyof T]; + type KeysWithTypeOf = ({[P in keyof T]: T[P] extends Type ? P : never })[keyof T] + type AllCommands = UnionToIntersection>>> + + export type SingleCommands = { + [Item in keyof AllCommands]: AllCommands[Item] extends (...args: any[]) => any + ? (...args: Parameters) => boolean + : never + } + + export type ChainedCommands = { + [Item in keyof AllCommands]: AllCommands[Item] extends (...args: any[]) => any + ? (...args: Parameters) => ChainedCommands + : never + } & { + run: () => boolean + } + } } -type ValuesOf = T[keyof T]; -type KeysWithTypeOf = ({[P in keyof T]: T[P] extends Type ? P : never })[keyof T] -type AllCommands = UnionToIntersection>>> +// type blub = Tiptap.AllExtensions -export type SingleCommands = { - [Item in keyof AllCommands]: AllCommands[Item] extends (...args: any[]) => any - ? (...args: Parameters) => boolean - : never -} +// export interface AllExtensions {} -export type ChainedCommands = { - [Item in keyof AllCommands]: AllCommands[Item] extends (...args: any[]) => any - ? (...args: Parameters) => ChainedCommands - : never -} & { - run: () => boolean -} +// export type UnfilteredCommands = { +// [Item in keyof Tiptap.AllExtensions]: AllExtensions[Item] extends Extension +// ? ExtensionCommands +// : AllExtensions[Item] extends Node +// ? NodeCommands +// : AllExtensions[Item] extends Mark +// ? MarkCommands +// : never +// } + +// type ValuesOf = T[keyof T]; +// type KeysWithTypeOf = ({[P in keyof T]: T[P] extends Type ? P : never })[keyof T] +// type AllCommands = UnionToIntersection>>> + +// export type SingleCommands = { +// [Item in keyof AllCommands]: AllCommands[Item] extends (...args: any[]) => any +// ? (...args: Parameters) => boolean +// : never +// } + +// export type ChainedCommands = { +// [Item in keyof AllCommands]: AllCommands[Item] extends (...args: any[]) => any +// ? (...args: Parameters) => ChainedCommands +// : never +// } & { +// run: () => boolean +// } type EditorContent = string | JSON | null diff --git a/packages/core/src/extensions/commands.ts b/packages/core/src/extensions/commands.ts index 3b82b620..63d3715b 100644 --- a/packages/core/src/extensions/commands.ts +++ b/packages/core/src/extensions/commands.ts @@ -147,8 +147,10 @@ export const Commands = Extension.create({ }, }) -declare module '@tiptap/core' { - interface AllExtensions { - Commands: typeof Commands, +declare global { + namespace Tiptap { + interface AllExtensions { + Commands: typeof Commands, + } } } diff --git a/packages/core/src/extensions/editable.ts b/packages/core/src/extensions/editable.ts index 4dc9f2d0..dc609ff9 100644 --- a/packages/core/src/extensions/editable.ts +++ b/packages/core/src/extensions/editable.ts @@ -14,8 +14,10 @@ export const Editable = Extension.create({ }, }) -declare module '@tiptap/core' { - interface AllExtensions { - Editable: typeof Editable, +declare global { + namespace Tiptap { + interface AllExtensions { + Editable: typeof Editable, + } } } diff --git a/packages/core/src/extensions/focusEvents.ts b/packages/core/src/extensions/focusEvents.ts index 468d105f..f5be8311 100644 --- a/packages/core/src/extensions/focusEvents.ts +++ b/packages/core/src/extensions/focusEvents.ts @@ -36,8 +36,10 @@ export const FocusEvents = Extension.create({ }, }) -declare module '@tiptap/core' { - interface AllExtensions { - FocusEvents: typeof FocusEvents, +declare global { + namespace Tiptap { + interface AllExtensions { + FocusEvents: typeof FocusEvents, + } } } diff --git a/packages/core/src/extensions/keymap.ts b/packages/core/src/extensions/keymap.ts index 99486512..99c87781 100644 --- a/packages/core/src/extensions/keymap.ts +++ b/packages/core/src/extensions/keymap.ts @@ -45,8 +45,10 @@ export const Keymap = Extension.create({ }, }) -declare module '@tiptap/core' { - interface AllExtensions { - Keymap: typeof Keymap, +declare global { + namespace Tiptap { + interface AllExtensions { + Keymap: typeof Keymap, + } } } diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 63dee913..97316c91 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -2,7 +2,6 @@ export { Editor, Command, CommandsSpec, - AllExtensions, } from './Editor' export * from './Extension' diff --git a/packages/extension-blockquote/src/index.ts b/packages/extension-blockquote/src/index.ts index d0d3f318..d29a4c93 100644 --- a/packages/extension-blockquote/src/index.ts +++ b/packages/extension-blockquote/src/index.ts @@ -58,8 +58,10 @@ const Blockquote = Node.create({ export default Blockquote -declare module '@tiptap/core' { - interface AllExtensions { - Blockquote: typeof Blockquote, +declare global { + namespace Tiptap { + interface AllExtensions { + Blockquote: typeof Blockquote, + } } } diff --git a/packages/extension-bold/src/index.ts b/packages/extension-bold/src/index.ts index 64ff675e..59fe2c7f 100644 --- a/packages/extension-bold/src/index.ts +++ b/packages/extension-bold/src/index.ts @@ -74,8 +74,10 @@ const Bold = Mark.create({ export default Bold -declare module '@tiptap/core' { - interface AllExtensions { - Bold: typeof Bold, +declare global { + namespace Tiptap { + interface AllExtensions { + Bold: typeof Bold, + } } } diff --git a/packages/extension-bullet-list/src/index.ts b/packages/extension-bullet-list/src/index.ts index 3fa2338b..fbb6d9ae 100644 --- a/packages/extension-bullet-list/src/index.ts +++ b/packages/extension-bullet-list/src/index.ts @@ -56,8 +56,10 @@ const BulletList = Node.create({ export default BulletList -declare module '@tiptap/core' { - interface AllExtensions { - BulletList: typeof BulletList, +declare global { + namespace Tiptap { + interface AllExtensions { + BulletList: typeof BulletList, + } } } diff --git a/packages/extension-code-block/src/index.ts b/packages/extension-code-block/src/index.ts index 2d697e9d..1c6e870c 100644 --- a/packages/extension-code-block/src/index.ts +++ b/packages/extension-code-block/src/index.ts @@ -99,8 +99,10 @@ const CodeBlock = Node.create({ export default CodeBlock -declare module '@tiptap/core' { - interface AllExtensions { - CodeBlock: typeof CodeBlock, +declare global { + namespace Tiptap { + interface AllExtensions { + CodeBlock: typeof CodeBlock, + } } } diff --git a/packages/extension-code/src/index.ts b/packages/extension-code/src/index.ts index 5eb5909e..6445ec5f 100644 --- a/packages/extension-code/src/index.ts +++ b/packages/extension-code/src/index.ts @@ -65,8 +65,10 @@ const Code = Mark.create({ export default Code -declare module '@tiptap/core' { - interface AllExtensions { - Code: typeof Code, +declare global { + namespace Tiptap { + interface AllExtensions { + Code: typeof Code, + } } } diff --git a/packages/extension-collaboration-cursor/src/index.ts b/packages/extension-collaboration-cursor/src/index.ts index ae88704c..a4fb97e3 100644 --- a/packages/extension-collaboration-cursor/src/index.ts +++ b/packages/extension-collaboration-cursor/src/index.ts @@ -64,8 +64,10 @@ const CollaborationCursor = Extension.create({ export default CollaborationCursor -declare module '@tiptap/core' { - interface AllExtensions { - CollaborationCursor: typeof CollaborationCursor, +declare global { + namespace Tiptap { + interface AllExtensions { + CollaborationCursor: typeof CollaborationCursor, + } } } diff --git a/packages/extension-collaboration/src/index.ts b/packages/extension-collaboration/src/index.ts index 729ef245..3ed695ee 100644 --- a/packages/extension-collaboration/src/index.ts +++ b/packages/extension-collaboration/src/index.ts @@ -32,8 +32,10 @@ const Collaboration = Extension.create({ export default Collaboration -declare module '@tiptap/core' { - interface AllExtensions { - Collaboration: typeof Collaboration, +declare global { + namespace Tiptap { + interface AllExtensions { + Collaboration: typeof Collaboration, + } } } diff --git a/packages/extension-document/src/index.ts b/packages/extension-document/src/index.ts index 5c9b4796..efec4dd5 100644 --- a/packages/extension-document/src/index.ts +++ b/packages/extension-document/src/index.ts @@ -8,8 +8,10 @@ const Document = Node.create({ export default Document -declare module '@tiptap/core' { - interface AllExtensions { - Document: typeof Document, +declare global { + namespace Tiptap { + interface AllExtensions { + Document: typeof Document, + } } } diff --git a/packages/extension-dropcursor/src/index.ts b/packages/extension-dropcursor/src/index.ts index fd951be2..acbf2866 100644 --- a/packages/extension-dropcursor/src/index.ts +++ b/packages/extension-dropcursor/src/index.ts @@ -11,8 +11,10 @@ const Dropcursor = Extension.create({ export default Dropcursor -declare module '@tiptap/core' { - interface AllExtensions { - Dropcursor: typeof Dropcursor, +declare global { + namespace Tiptap { + interface AllExtensions { + Dropcursor: typeof Dropcursor, + } } } diff --git a/packages/extension-focus/src/index.ts b/packages/extension-focus/src/index.ts index 62c7844c..10c517e7 100644 --- a/packages/extension-focus/src/index.ts +++ b/packages/extension-focus/src/index.ts @@ -50,8 +50,10 @@ const FocusClasses = Extension.create({ export default FocusClasses -declare module '@tiptap/core' { - interface AllExtensions { - FocusClasses: typeof FocusClasses, +declare global { + namespace Tiptap { + interface AllExtensions { + FocusClasses: typeof FocusClasses, + } } } diff --git a/packages/extension-font-family/src/index.ts b/packages/extension-font-family/src/index.ts index e83846dc..4dbf1707 100644 --- a/packages/extension-font-family/src/index.ts +++ b/packages/extension-font-family/src/index.ts @@ -52,8 +52,10 @@ const FontFamily = Extension.create({ export default FontFamily -declare module '@tiptap/core' { - interface AllExtensions { - FontFamily: typeof FontFamily, +declare global { + namespace Tiptap { + interface AllExtensions { + FontFamily: typeof FontFamily, + } } } diff --git a/packages/extension-gapcursor/src/index.ts b/packages/extension-gapcursor/src/index.ts index 09ee3846..f295bef7 100644 --- a/packages/extension-gapcursor/src/index.ts +++ b/packages/extension-gapcursor/src/index.ts @@ -11,8 +11,10 @@ const Gapcursor = Extension.create({ export default Gapcursor -declare module '@tiptap/core' { - interface AllExtensions { - Gapcursor: typeof Gapcursor, +declare global { + namespace Tiptap { + interface AllExtensions { + Gapcursor: typeof Gapcursor, + } } } diff --git a/packages/extension-hard-break/src/index.ts b/packages/extension-hard-break/src/index.ts index 677b0941..dcaa9c40 100644 --- a/packages/extension-hard-break/src/index.ts +++ b/packages/extension-hard-break/src/index.ts @@ -50,8 +50,10 @@ const HardBreak = Node.create({ export default HardBreak -declare module '@tiptap/core' { - interface AllExtensions { - HardBreak: typeof HardBreak, +declare global { + namespace Tiptap { + interface AllExtensions { + HardBreak: typeof HardBreak, + } } } diff --git a/packages/extension-heading/src/index.ts b/packages/extension-heading/src/index.ts index c02b8a81..e9420263 100644 --- a/packages/extension-heading/src/index.ts +++ b/packages/extension-heading/src/index.ts @@ -83,8 +83,10 @@ const Heading = Node.create({ export default Heading -declare module '@tiptap/core' { - interface AllExtensions { - Heading: typeof Heading, +declare global { + namespace Tiptap { + interface AllExtensions { + Heading: typeof Heading, + } } } diff --git a/packages/extension-highlight/src/index.ts b/packages/extension-highlight/src/index.ts index c3298aa6..c57adfe5 100644 --- a/packages/extension-highlight/src/index.ts +++ b/packages/extension-highlight/src/index.ts @@ -88,8 +88,10 @@ const Highlight = Mark.create({ export default Highlight -declare module '@tiptap/core' { - interface AllExtensions { - Highlight: typeof Highlight, +declare global { + namespace Tiptap { + interface AllExtensions { + Highlight: typeof Highlight, + } } } diff --git a/packages/extension-history/src/index.ts b/packages/extension-history/src/index.ts index 6f389f2e..12e6ed7a 100644 --- a/packages/extension-history/src/index.ts +++ b/packages/extension-history/src/index.ts @@ -46,8 +46,10 @@ const History = Extension.create({ export default History -declare module '@tiptap/core' { - interface AllExtensions { - History: typeof History, +declare global { + namespace Tiptap { + interface AllExtensions { + History: typeof History, + } } } diff --git a/packages/extension-horizontal-rule/src/index.ts b/packages/extension-horizontal-rule/src/index.ts index ebab3e3b..d8f0e04d 100644 --- a/packages/extension-horizontal-rule/src/index.ts +++ b/packages/extension-horizontal-rule/src/index.ts @@ -47,8 +47,10 @@ const HorizontalRule = Node.create({ export default HorizontalRule -declare module '@tiptap/core' { - interface AllExtensions { - HorizontalRule: typeof HorizontalRule, +declare global { + namespace Tiptap { + interface AllExtensions { + HorizontalRule: typeof HorizontalRule, + } } } diff --git a/packages/extension-image/src/index.ts b/packages/extension-image/src/index.ts index 7eeb831b..9a8bfd93 100644 --- a/packages/extension-image/src/index.ts +++ b/packages/extension-image/src/index.ts @@ -82,8 +82,10 @@ const Image = Node.create({ export default Image -declare module '@tiptap/core' { - interface AllExtensions { - Image: typeof Image, +declare global { + namespace Tiptap { + interface AllExtensions { + Image: typeof Image, + } } } diff --git a/packages/extension-italic/src/index.ts b/packages/extension-italic/src/index.ts index 9843f65e..4b226186 100644 --- a/packages/extension-italic/src/index.ts +++ b/packages/extension-italic/src/index.ts @@ -76,8 +76,10 @@ const Italic = Mark.create({ export default Italic -declare module '@tiptap/core' { - interface AllExtensions { - Italic: typeof Italic, +declare global { + namespace Tiptap { + interface AllExtensions { + Italic: typeof Italic, + } } } diff --git a/packages/extension-link/src/index.ts b/packages/extension-link/src/index.ts index 3570b998..9aaf2f16 100644 --- a/packages/extension-link/src/index.ts +++ b/packages/extension-link/src/index.ts @@ -93,8 +93,10 @@ const Link = Mark.create({ export default Link -declare module '@tiptap/core' { - interface AllExtensions { - Link: typeof Link, +declare global { + namespace Tiptap { + interface AllExtensions { + Link: typeof Link, + } } } diff --git a/packages/extension-list-item/src/index.ts b/packages/extension-list-item/src/index.ts index b0d88118..bf587470 100644 --- a/packages/extension-list-item/src/index.ts +++ b/packages/extension-list-item/src/index.ts @@ -40,8 +40,10 @@ const ListItem = Node.create({ export default ListItem -declare module '@tiptap/core' { - interface AllExtensions { - ListItem: typeof ListItem, +declare global { + namespace Tiptap { + interface AllExtensions { + ListItem: typeof ListItem, + } } } diff --git a/packages/extension-ordered-list/src/index.ts b/packages/extension-ordered-list/src/index.ts index d20b361a..da0b4afa 100644 --- a/packages/extension-ordered-list/src/index.ts +++ b/packages/extension-ordered-list/src/index.ts @@ -80,8 +80,10 @@ const OrderedList = Node.create({ export default OrderedList -declare module '@tiptap/core' { - interface AllExtensions { - OrderedList: typeof OrderedList, +declare global { + namespace Tiptap { + interface AllExtensions { + OrderedList: typeof OrderedList, + } } } diff --git a/packages/extension-paragraph/src/index.ts b/packages/extension-paragraph/src/index.ts index 961d08eb..d9712f1b 100644 --- a/packages/extension-paragraph/src/index.ts +++ b/packages/extension-paragraph/src/index.ts @@ -47,8 +47,10 @@ const Paragraph = Node.create({ export default Paragraph -declare module '@tiptap/core' { - interface AllExtensions { - Paragraph: typeof Paragraph, +declare global { + namespace Tiptap { + interface AllExtensions { + Paragraph: typeof Paragraph, + } } } diff --git a/packages/extension-strike/src/index.ts b/packages/extension-strike/src/index.ts index 197e949e..b74df416 100644 --- a/packages/extension-strike/src/index.ts +++ b/packages/extension-strike/src/index.ts @@ -74,8 +74,10 @@ const Strike = Mark.create({ export default Strike -declare module '@tiptap/core' { - interface AllExtensions { - Strike: typeof Strike, +declare global { + namespace Tiptap { + interface AllExtensions { + Strike: typeof Strike, + } } } diff --git a/packages/extension-task-item/src/index.ts b/packages/extension-task-item/src/index.ts index ce7c0ab3..18202b4a 100644 --- a/packages/extension-task-item/src/index.ts +++ b/packages/extension-task-item/src/index.ts @@ -125,8 +125,10 @@ const TaskItem = Node.create({ export default TaskItem -declare module '@tiptap/core' { - interface AllExtensions { - TaskItem: typeof TaskItem, +declare global { + namespace Tiptap { + interface AllExtensions { + TaskItem: typeof TaskItem, + } } } diff --git a/packages/extension-task-list/src/index.ts b/packages/extension-task-list/src/index.ts index 554cf283..c5c1d171 100644 --- a/packages/extension-task-list/src/index.ts +++ b/packages/extension-task-list/src/index.ts @@ -44,8 +44,10 @@ const TaskList = Node.create({ export default TaskList -declare module '@tiptap/core' { - interface AllExtensions { - TaskList: typeof TaskList, +declare global { + namespace Tiptap { + interface AllExtensions { + TaskList: typeof TaskList, + } } } diff --git a/packages/extension-text-align/src/index.ts b/packages/extension-text-align/src/index.ts index 63fb2279..46847db1 100644 --- a/packages/extension-text-align/src/index.ts +++ b/packages/extension-text-align/src/index.ts @@ -65,8 +65,10 @@ const TextAlign = Extension.create({ export default TextAlign -declare module '@tiptap/core' { - interface AllExtensions { - TextAlign: typeof TextAlign, +declare global { + namespace Tiptap { + interface AllExtensions { + TextAlign: typeof TextAlign, + } } } diff --git a/packages/extension-text-style/src/index.ts b/packages/extension-text-style/src/index.ts index bed66e32..aaea4511 100644 --- a/packages/extension-text-style/src/index.ts +++ b/packages/extension-text-style/src/index.ts @@ -46,8 +46,10 @@ const TextStyle = Mark.create({ export default TextStyle -declare module '@tiptap/core' { - interface AllExtensions { - TextStyle: typeof TextStyle, +declare global { + namespace Tiptap { + interface AllExtensions { + TextStyle: typeof TextStyle, + } } } diff --git a/packages/extension-text/src/index.ts b/packages/extension-text/src/index.ts index b6bea78d..2180e1c2 100644 --- a/packages/extension-text/src/index.ts +++ b/packages/extension-text/src/index.ts @@ -7,8 +7,10 @@ const Text = Node.create({ export default Text -declare module '@tiptap/core' { - interface AllExtensions { - Text: typeof Text, +declare global { + namespace Tiptap { + interface AllExtensions { + Text: typeof Text, + } } } diff --git a/packages/extension-typography/src/index.ts b/packages/extension-typography/src/index.ts index 34e696c4..3b35dc93 100644 --- a/packages/extension-typography/src/index.ts +++ b/packages/extension-typography/src/index.ts @@ -45,8 +45,10 @@ const Typography = Extension.create({ export default Typography -declare module '@tiptap/core' { - interface AllExtensions { - Typography: typeof Typography, +declare global { + namespace Tiptap { + interface AllExtensions { + Typography: typeof Typography, + } } } diff --git a/packages/extension-underline/src/index.ts b/packages/extension-underline/src/index.ts index 0f9cb39c..4bfe1ee5 100644 --- a/packages/extension-underline/src/index.ts +++ b/packages/extension-underline/src/index.ts @@ -45,8 +45,10 @@ const Underline = Mark.create({ export default Underline -declare module '@tiptap/core' { - interface AllExtensions { - Underline: typeof Underline, +declare global { + namespace Tiptap { + interface AllExtensions { + Underline: typeof Underline, + } } }