Skip to content

Commit d59879d

Browse files
authored
refactor: update directory structure and imports (#447)
* refactor directory structure * rename * fix import/no-cycle lint * rename dirs * fix build * clean css imports
1 parent e320915 commit d59879d

File tree

162 files changed

+599
-548
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

162 files changed

+599
-548
lines changed

.eslintrc.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
const typeScriptExtensions = [".ts", ".cts", ".mts", ".tsx"];
2+
3+
const allExtensions = [...typeScriptExtensions, ".js", ".jsx"];
4+
15
module.exports = {
26
root: true,
37
extends: [
@@ -8,6 +12,18 @@ module.exports = {
812
],
913
parser: "@typescript-eslint/parser",
1014
plugins: ["import", "@typescript-eslint"],
15+
settings: {
16+
"import/extensions": allExtensions,
17+
"import/external-module-folders": ["node_modules", "node_modules/@types"],
18+
"import/parsers": {
19+
"@typescript-eslint/parser": typeScriptExtensions,
20+
},
21+
"import/resolver": {
22+
node: {
23+
extensions: allExtensions,
24+
},
25+
},
26+
},
1127
rules: {
1228
curly: 1,
1329
"import/no-extraneous-dependencies": [
@@ -23,5 +39,19 @@ module.exports = {
2339
"@typescript-eslint/no-non-null-assertion": "off",
2440
"@typescript-eslint/no-explicit-any": "off",
2541
"@typescript-eslint/ban-ts-comment": "off",
42+
"import/no-cycle": "error",
43+
// doesn't work:
44+
// "import/no-restricted-paths": [
45+
// "error",
46+
// {
47+
// zones: [
48+
// {
49+
// target: "./src/**/*",
50+
// from: "./types/**/*",
51+
// message: "Import from this module to types is not allowed.",
52+
// },
53+
// ],
54+
// },
55+
// ],
2656
},
2757
};

packages/core/src/api/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
### @blocknote/core/src/api
2+
3+
Implements the BlockNote API surface
4+
5+
- `blockManipulation`: API to insert / update / remove blocks
6+
- `exporters`: exporting to HTML / markdown / other formats
7+
- `nodeConversions`: internal API for converting between BlockNote Schema (Blocks) and Prosemirror (Nodes)
8+
- `parsers`: importing from HTML / markdown / other formats

packages/core/src/api/blockManipulation/blockManipulation.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { afterEach, beforeEach, describe, expect, it } from "vitest";
2-
import { BlockNoteEditor } from "../../BlockNoteEditor";
3-
import { Block, PartialBlock } from "../../extensions/Blocks/api/blocks/types";
42
import {
53
DefaultBlockSchema,
64
DefaultInlineContentSchema,
75
DefaultStyleSchema,
8-
} from "../../extensions/Blocks/api/defaultBlocks";
6+
} from "../../blocks/defaultBlocks";
7+
import { BlockNoteEditor } from "../../editor/BlockNoteEditor";
8+
import { Block, PartialBlock } from "../../schema/blocks/types";
99

1010
let editor: BlockNoteEditor;
1111

packages/core/src/api/blockManipulation/blockManipulation.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import { Editor } from "@tiptap/core";
22
import { Node } from "prosemirror-model";
33

4-
import { BlockNoteEditor } from "../../BlockNoteEditor";
4+
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
55
import {
66
BlockIdentifier,
77
BlockSchema,
8+
InlineContentSchema,
89
PartialBlock,
9-
} from "../../extensions/Blocks/api/blocks/types";
10-
import { InlineContentSchema } from "../../extensions/Blocks/api/inlineContent/types";
11-
import { StyleSchema } from "../../extensions/Blocks/api/styles/types";
10+
StyleSchema,
11+
} from "../../schema";
1212
import { blockToNode } from "../nodeConversions/nodeConversions";
13-
import { getNodeById } from "../util/nodeUtil";
13+
import { getNodeById } from "../nodeUtil";
1414

1515
export function insertBlocks<
1616
BSchema extends BlockSchema,

packages/core/src/api/exporters/copyExtension.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import { Extension } from "@tiptap/core";
22
import { Plugin } from "prosemirror-state";
33

4-
import { BlockNoteEditor } from "../../BlockNoteEditor";
5-
import { BlockSchema } from "../../extensions/Blocks/api/blocks/types";
6-
import { InlineContentSchema } from "../../extensions/Blocks/api/inlineContent/types";
7-
import { StyleSchema } from "../../extensions/Blocks/api/styles/types";
4+
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
5+
import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema";
86
import { createExternalHTMLExporter } from "./html/externalHTMLExporter";
97
import { createInternalHTMLSerializer } from "./html/internalHTMLSerializer";
108
import { cleanHTMLToMarkdown } from "./markdown/markdownExporter";

packages/core/src/api/exporters/html/externalHTMLExporter.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ import rehypeParse from "rehype-parse";
33
import rehypeStringify from "rehype-stringify";
44
import { unified } from "unified";
55

6-
import { BlockNoteEditor } from "../../../BlockNoteEditor";
6+
import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
77
import {
88
BlockSchema,
9+
InlineContentSchema,
910
PartialBlock,
10-
} from "../../../extensions/Blocks/api/blocks/types";
11-
import { InlineContentSchema } from "../../../extensions/Blocks/api/inlineContent/types";
12-
import { StyleSchema } from "../../../extensions/Blocks/api/styles/types";
11+
StyleSchema,
12+
} from "../../../schema";
1313
import { blockToNode } from "../../nodeConversions/nodeConversions";
1414
import {
1515
serializeNodeInner,

packages/core/src/api/exporters/html/htmlConversion.test.ts

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
import { afterEach, beforeEach, describe, expect, it } from "vitest";
2-
import { BlockNoteEditor } from "../../../BlockNoteEditor";
2+
import { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
33

44
import { addIdsToBlocks, partialBlocksToBlocksForTesting } from "../../..";
5-
import {
6-
BlockSchema,
7-
PartialBlock,
8-
} from "../../../extensions/Blocks/api/blocks/types";
9-
import { InlineContentSchema } from "../../../extensions/Blocks/api/inlineContent/types";
10-
import { StyleSchema } from "../../../extensions/Blocks/api/styles/types";
11-
import { customBlocksTestCases } from "../../testCases/cases/customBlocks";
12-
import { customInlineContentTestCases } from "../../testCases/cases/customInlineContent";
13-
import { customStylesTestCases } from "../../testCases/cases/customStyles";
14-
import { defaultSchemaTestCases } from "../../testCases/cases/defaultSchema";
5+
import { BlockSchema, PartialBlock } from "../../../schema/blocks/types";
6+
import { InlineContentSchema } from "../../../schema/inlineContent/types";
7+
import { StyleSchema } from "../../../schema/styles/types";
8+
import { customBlocksTestCases } from "../../testUtil/cases/customBlocks";
9+
import { customInlineContentTestCases } from "../../testUtil/cases/customInlineContent";
10+
import { customStylesTestCases } from "../../testUtil/cases/customStyles";
11+
import { defaultSchemaTestCases } from "../../testUtil/cases/defaultSchema";
1512
import { createExternalHTMLExporter } from "./externalHTMLExporter";
1613
import { createInternalHTMLSerializer } from "./internalHTMLSerializer";
1714

packages/core/src/api/exporters/html/internalHTMLSerializer.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { DOMSerializer, Fragment, Node, Schema } from "prosemirror-model";
2-
import { BlockNoteEditor } from "../../../BlockNoteEditor";
2+
import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
33
import {
44
BlockSchema,
5+
InlineContentSchema,
56
PartialBlock,
6-
} from "../../../extensions/Blocks/api/blocks/types";
7-
import { InlineContentSchema } from "../../../extensions/Blocks/api/inlineContent/types";
8-
import { StyleSchema } from "../../../extensions/Blocks/api/styles/types";
7+
StyleSchema,
8+
} from "../../../schema";
99
import { blockToNode } from "../../nodeConversions/nodeConversions";
1010
import {
1111
serializeNodeInner,

packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import { DOMSerializer, Fragment, Node } from "prosemirror-model";
22

3-
import { BlockNoteEditor } from "../../../../BlockNoteEditor";
4-
import { BlockSchema } from "../../../../extensions/Blocks/api/blocks/types";
5-
import { InlineContentSchema } from "../../../../extensions/Blocks/api/inlineContent/types";
6-
import { StyleSchema } from "../../../../extensions/Blocks/api/styles/types";
3+
import type { BlockNoteEditor } from "../../../../editor/BlockNoteEditor";
4+
import {
5+
BlockSchema,
6+
InlineContentSchema,
7+
StyleSchema,
8+
} from "../../../../schema";
79
import { nodeToBlock } from "../../../nodeConversions/nodeConversions";
810

911
function doc(options: { document?: Document }) {

packages/core/src/api/exporters/markdown/markdownExporter.test.ts

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,15 @@
11
import fs from "node:fs";
22
import path from "node:path";
33
import { afterEach, beforeEach, describe, expect, it } from "vitest";
4-
import { BlockNoteEditor } from "../../../BlockNoteEditor";
5-
import {
6-
BlockSchema,
7-
PartialBlock,
8-
} from "../../../extensions/Blocks/api/blocks/types";
9-
import { InlineContentSchema } from "../../../extensions/Blocks/api/inlineContent/types";
10-
import { StyleSchema } from "../../../extensions/Blocks/api/styles/types";
11-
import { partialBlocksToBlocksForTesting } from "../../nodeConversions/testUtil";
12-
import { customBlocksTestCases } from "../../testCases/cases/customBlocks";
13-
import { customInlineContentTestCases } from "../../testCases/cases/customInlineContent";
14-
import { customStylesTestCases } from "../../testCases/cases/customStyles";
15-
import { defaultSchemaTestCases } from "../../testCases/cases/defaultSchema";
4+
import { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
5+
import { BlockSchema, PartialBlock } from "../../../schema/blocks/types";
6+
import { InlineContentSchema } from "../../../schema/inlineContent/types";
7+
import { StyleSchema } from "../../../schema/styles/types";
8+
import { partialBlocksToBlocksForTesting } from "../../testUtil/partialBlockTestUtil";
9+
import { customBlocksTestCases } from "../../testUtil/cases/customBlocks";
10+
import { customInlineContentTestCases } from "../../testUtil/cases/customInlineContent";
11+
import { customStylesTestCases } from "../../testUtil/cases/customStyles";
12+
import { defaultSchemaTestCases } from "../../testUtil/cases/defaultSchema";
1613

1714
async function convertToMarkdownAndCompareSnapshots<
1815
B extends BlockSchema,

packages/core/src/api/exporters/markdown/markdownExporter.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import rehypeRemark from "rehype-remark";
44
import remarkGfm from "remark-gfm";
55
import remarkStringify from "remark-stringify";
66
import { unified } from "unified";
7+
import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
78
import {
89
Block,
9-
BlockNoteEditor,
1010
BlockSchema,
1111
InlineContentSchema,
1212
StyleSchema,
13-
createExternalHTMLExporter,
14-
} from "../../..";
13+
} from "../../../schema";
14+
import { createExternalHTMLExporter } from "../html/externalHTMLExporter";
1515
import { removeUnderlines } from "./removeUnderlinesRehypePlugin";
1616

1717
export function cleanHTMLToMarkdown(cleanHTMLString: string) {

packages/core/src/api/nodeConversions/nodeConversions.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { afterEach, beforeEach, describe, expect, it } from "vitest";
22

3-
import { BlockNoteEditor } from "../../BlockNoteEditor";
4-
import { PartialBlock } from "../../extensions/Blocks/api/blocks/types";
5-
import { customInlineContentTestCases } from "../testCases/cases/customInlineContent";
6-
import { customStylesTestCases } from "../testCases/cases/customStyles";
7-
import { defaultSchemaTestCases } from "../testCases/cases/defaultSchema";
3+
import { BlockNoteEditor } from "../../editor/BlockNoteEditor";
4+
import { PartialBlock } from "../../schema/blocks/types";
5+
import { customInlineContentTestCases } from "../testUtil/cases/customInlineContent";
6+
import { customStylesTestCases } from "../testUtil/cases/customStyles";
7+
import { defaultSchemaTestCases } from "../testUtil/cases/defaultSchema";
88
import { blockToNode, nodeToBlock } from "./nodeConversions";
9-
import { addIdsToBlock, partialBlockToBlockForTesting } from "./testUtil";
9+
import { addIdsToBlock, partialBlockToBlockForTesting } from "../testUtil/partialBlockTestUtil";
1010

1111
function validateConversion(
1212
block: PartialBlock<any, any, any>,

packages/core/src/api/nodeConversions/nodeConversions.ts

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,32 @@
1-
import { Mark } from "@tiptap/pm/model";
2-
import { Node, Schema } from "prosemirror-model";
3-
import {
1+
import { Mark, Node, Schema } from "@tiptap/pm/model";
2+
3+
import UniqueID from "../../extensions/UniqueID/UniqueID";
4+
import type {
45
Block,
56
BlockSchema,
6-
PartialBlock,
7-
PartialTableContent,
8-
TableContent,
9-
} from "../../extensions/Blocks/api/blocks/types";
10-
import {
117
CustomInlineContentConfig,
128
CustomInlineContentFromConfig,
139
InlineContent,
1410
InlineContentFromConfig,
1511
InlineContentSchema,
12+
PartialBlock,
1613
PartialCustomInlineContentFromConfig,
1714
PartialInlineContent,
1815
PartialLink,
16+
PartialTableContent,
17+
StyleSchema,
1918
StyledText,
19+
Styles,
20+
TableContent,
21+
} from "../../schema";
22+
import { getBlockInfo } from "../getBlockInfoFromPos";
23+
24+
import {
2025
isLinkInlineContent,
2126
isPartialLinkInlineContent,
2227
isStyledTextInlineContent,
23-
} from "../../extensions/Blocks/api/inlineContent/types";
24-
import { StyleSchema, Styles } from "../../extensions/Blocks/api/styles/types";
25-
import { getBlockInfo } from "../../extensions/Blocks/helpers/getBlockInfoFromPos";
26-
import UniqueID from "../../extensions/UniqueID/UniqueID";
27-
import { UnreachableCaseError } from "../../shared/utils";
28+
} from "../../schema/inlineContent/types";
29+
import { UnreachableCaseError } from "../../util/typescript";
2830

2931
/**
3032
* Convert a StyledText inline element to a

packages/core/src/api/parsers/html/parseHTML.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
import { DOMParser, Schema } from "prosemirror-model";
2-
import { Block, BlockSchema, nodeToBlock } from "../../..";
3-
import { InlineContentSchema } from "../../../extensions/Blocks/api/inlineContent/types";
4-
import { StyleSchema } from "../../../extensions/Blocks/api/styles/types";
5-
import { nestedListsToBlockNoteStructure } from "./util/nestedLists";
2+
import {
3+
Block,
4+
BlockSchema,
5+
InlineContentSchema,
6+
StyleSchema,
7+
} from "../../../schema";
68

9+
import { nodeToBlock } from "../../nodeConversions/nodeConversions";
10+
import { nestedListsToBlockNoteStructure } from "./util/nestedLists";
711
export async function HTMLToBlocks<
812
BSchema extends BlockSchema,
913
I extends InlineContentSchema,

packages/core/src/api/parsers/markdown/parseMarkdown.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ import remarkGfm from "remark-gfm";
44
import remarkParse from "remark-parse";
55
import remarkRehype, { defaultHandlers } from "remark-rehype";
66
import { unified } from "unified";
7-
import { Block, BlockSchema, InlineContentSchema, StyleSchema } from "../../..";
7+
import {
8+
Block,
9+
BlockSchema,
10+
InlineContentSchema,
11+
StyleSchema,
12+
} from "../../../schema";
813
import { HTMLToBlocks } from "../html/parseHTML";
914

1015
// modified version of https://github.com/syntax-tree/mdast-util-to-hast/blob/main/lib/handlers/code.js

packages/core/src/api/parsers/pasteExtension.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import { Extension } from "@tiptap/core";
22
import { Plugin } from "prosemirror-state";
33

4-
import { BlockNoteEditor } from "../../BlockNoteEditor";
5-
import { BlockSchema } from "../../extensions/Blocks/api/blocks/types";
6-
import { InlineContentSchema } from "../../extensions/Blocks/api/inlineContent/types";
7-
import { StyleSchema } from "../../extensions/Blocks/api/styles/types";
4+
import type { BlockNoteEditor } from "../../editor/BlockNoteEditor";
5+
import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema";
86
import { nestedListsToBlockNoteStructure } from "./html/util/nestedLists";
97

108
const acceptedMIMETypes = [

packages/core/src/api/testCases/index.ts

Lines changed: 0 additions & 20 deletions
This file was deleted.

packages/core/src/api/testCases/cases/customBlocks.ts renamed to packages/core/src/api/testUtil/cases/customBlocks.ts

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,19 @@
1-
import { EditorTestCases } from "..";
1+
import { EditorTestCases } from "../index";
22

3-
import { BlockNoteEditor } from "../../../BlockNoteEditor";
4-
import { createBlockSpec } from "../../../extensions/Blocks/api/blocks/createSpec";
5-
import {
6-
BlockSchemaFromSpecs,
7-
BlockSpecs,
8-
} from "../../../extensions/Blocks/api/blocks/types";
3+
import { BlockNoteEditor } from "../../../editor/BlockNoteEditor";
94
import {
105
DefaultInlineContentSchema,
116
DefaultStyleSchema,
127
defaultBlockSpecs,
13-
} from "../../../extensions/Blocks/api/defaultBlocks";
14-
import { defaultProps } from "../../../extensions/Blocks/api/defaultProps";
8+
} from "../../../blocks/defaultBlocks";
9+
import { defaultProps } from "../../../blocks/defaultProps";
1510
import {
1611
imagePropSchema,
1712
renderImage,
18-
} from "../../../extensions/Blocks/nodes/BlockContent/ImageBlockContent/ImageBlockContent";
19-
import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../extensions/Blocks/nodes/BlockContent/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY";
13+
} from "../../../blocks/ImageBlockContent/ImageBlockContent";
14+
import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY";
15+
import { createBlockSpec } from "../../../schema/blocks/createSpec";
16+
import { BlockSchemaFromSpecs, BlockSpecs } from "../../../schema/blocks/types";
2017

2118
// This is a modified version of the default image block that does not implement
2219
// a `serialize` function. It's used to test if the custom serializer by default

0 commit comments

Comments
 (0)