Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .github/workflows/core.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Core check
on:
pull_request:

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run ESLint check
uses: ./.github/actions/lint
with:
package-name: '@editorjs/core'

build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build the package
uses: ./.github/actions/build
with:
package-name: '@editorjs/core'
22 changes: 22 additions & 0 deletions .github/workflows/sdk.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: SDK check
on:
pull_request:

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run ESLint check
uses: ./.github/actions/lint
with:
package-name: '@editorjs/sdk'

build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build the package
uses: ./.github/actions/build
with:
package-name: '@editorjs/sdk'
5 changes: 5 additions & 0 deletions packages/core/eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ export default [
],
ignoreTypeImport: true,
}],
// @todo: remove when we setup eslint to correctly handle the types
'@typescript-eslint/no-unsafe-call': 'off',
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unsafe-assignment': 'off',
'@typescript-eslint/no-unsafe-argument': 'off',
},
},
];
6 changes: 3 additions & 3 deletions packages/core/src/api/BlocksAPI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@
import { Inject, Service } from 'typedi';
import { BlocksManager } from '../components/BlockManager.js';
import { BlockToolData, ToolConfig } from '@editorjs/editorjs';
import { CoreConfigValidated } from '../entities/index.js';
import { CoreConfigValidated } from '@editorjs/sdk';

Check failure on line 5 in packages/core/src/api/BlocksAPI.ts

View workflow job for this annotation

GitHub Actions / lint

Can't resolve '@editorjs/sdk' in '/home/runner/work/document-model/document-model/packages/core/src/api'
import { BlocksAPI as BlocksApiInterface } from '@editorjs/sdk';

Check failure on line 6 in packages/core/src/api/BlocksAPI.ts

View workflow job for this annotation

GitHub Actions / lint

Can't resolve '@editorjs/sdk' in '/home/runner/work/document-model/document-model/packages/core/src/api'

/**
* Blocks API
* - provides methods to work with blocks
*/
@Service()
export class BlocksAPI {
export class BlocksAPI implements BlocksApiInterface {
/**
* BlocksManager instance to work with blocks
*/
Expand Down Expand Up @@ -58,7 +59,6 @@
): void {
this.#blocksManager.insert({
type,
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
data,
index,
replace,
Expand Down
3 changes: 2 additions & 1 deletion packages/core/src/api/SelectionAPI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@
import { Service } from 'typedi';

import { SelectionManager } from '../components/SelectionManager.js';
import { createInlineToolName } from '@editorjs/model';

Check failure on line 5 in packages/core/src/api/SelectionAPI.ts

View workflow job for this annotation

GitHub Actions / lint

Can't resolve '@editorjs/model' in '/home/runner/work/document-model/document-model/packages/core/src/api'
import { InlineToolFormatData } from '@editorjs/sdk';

Check failure on line 6 in packages/core/src/api/SelectionAPI.ts

View workflow job for this annotation

GitHub Actions / lint

Can't resolve '@editorjs/sdk' in '/home/runner/work/document-model/document-model/packages/core/src/api'
import { SelectionAPI as SelectionApiInterface } from '@editorjs/sdk';

Check failure on line 7 in packages/core/src/api/SelectionAPI.ts

View workflow job for this annotation

GitHub Actions / lint

Can't resolve '@editorjs/sdk' in '/home/runner/work/document-model/document-model/packages/core/src/api'

/**
* Selection API class
* - provides methods to work with selection
*/
@Service()
export class SelectionAPI {
export class SelectionAPI implements SelectionApiInterface {
#selectionManager: SelectionManager;

/**
Expand Down
3 changes: 2 additions & 1 deletion packages/core/src/api/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import 'reflect-metadata';
import { Inject, Service } from 'typedi';
import { EditorAPI as EditorApiInterface } from '@editorjs/sdk';

Check failure on line 3 in packages/core/src/api/index.ts

View workflow job for this annotation

GitHub Actions / lint

Can't resolve '@editorjs/sdk' in '/home/runner/work/document-model/document-model/packages/core/src/api'
import { BlocksAPI } from './BlocksAPI.js';
import { SelectionAPI } from './SelectionAPI.js';

/**
* Class gathers all Editor's APIs
*/
@Service()
export class EditorAPI {
export class EditorAPI implements EditorApiInterface {
/**
* Blocks API instance to work with blocks
*/
Expand Down
5 changes: 1 addition & 4 deletions packages/core/src/components/BlockManager.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import { BlockAddedEvent, BlockRemovedEvent, EditorJSModel, EventType, ModelEvents } from '@editorjs/model';

Check failure on line 1 in packages/core/src/components/BlockManager.ts

View workflow job for this annotation

GitHub Actions / lint

Can't resolve '@editorjs/model' in '/home/runner/work/document-model/document-model/packages/core/src/components'
import 'reflect-metadata';
import { Inject, Service } from 'typedi';
import { BlockToolAdapter, CaretAdapter, FormattingAdapter } from '@editorjs/dom-adapters';

Check failure on line 4 in packages/core/src/components/BlockManager.ts

View workflow job for this annotation

GitHub Actions / lint

Can't resolve '@editorjs/dom-adapters' in '/home/runner/work/document-model/document-model/packages/core/src/components'
import ToolsManager from '../tools/ToolsManager.js';
import { BlockAPI, BlockToolData } from '@editorjs/editorjs';
import { CoreConfigValidated } from '../entities/Config.js';
import { BlockAddedCoreEvent, BlockRemovedCoreEvent } from './EventBus/index.js';
import { EventBus } from '@editorjs/sdk';
import { CoreConfigValidated, EventBus, BlockAddedCoreEvent, BlockRemovedCoreEvent } from '@editorjs/sdk';

Check failure on line 7 in packages/core/src/components/BlockManager.ts

View workflow job for this annotation

GitHub Actions / lint

Can't resolve '@editorjs/sdk' in '/home/runner/work/document-model/document-model/packages/core/src/components'
/**
* Parameters for the BlocksManager.insert() method
*/
Expand Down Expand Up @@ -121,7 +119,6 @@
newIndex = this.#model.length + (replace ? 0 : 1);
}

// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
this.#model.addBlock(this.#config.userId, {
...data,
name: type,
Expand Down
6 changes: 0 additions & 6 deletions packages/core/src/components/EventBus/index.ts

This file was deleted.

1 change: 0 additions & 1 deletion packages/core/src/components/EventBus/ui-events/index.ts

This file was deleted.

6 changes: 2 additions & 4 deletions packages/core/src/components/SelectionManager.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import 'reflect-metadata';
import { FormattingAdapter } from '@editorjs/dom-adapters';

Check failure on line 2 in packages/core/src/components/SelectionManager.ts

View workflow job for this annotation

GitHub Actions / lint

Can't resolve '@editorjs/dom-adapters' in '/home/runner/work/document-model/document-model/packages/core/src/components'
import type { CaretManagerEvents, InlineFragment, InlineToolName } from '@editorjs/model';
import { CaretManagerCaretUpdatedEvent, Index, EditorJSModel, createInlineToolData, createInlineToolName } from '@editorjs/model';
import { EventType } from '@editorjs/model';
import { CoreEventType, ToolLoadedCoreEvent } from './EventBus/index.js';
import { EventBus } from '@editorjs/sdk';
import { CoreEventType, ToolLoadedCoreEvent, EventBus, SelectionChangedCoreEvent } from '@editorjs/sdk';
import { Inject, Service } from 'typedi';
import { SelectionChangedCoreEvent } from './EventBus/core-events/SelectionChangedCoreEvent.js';
import { type CoreConfig, InlineTool, InlineToolFormatData } from '@editorjs/sdk';

/**
Expand Down Expand Up @@ -61,7 +59,7 @@
this.#eventBus.addEventListener(`core:${CoreEventType.ToolLoaded}`, (event: ToolLoadedCoreEvent) => {
const { tool } = event.detail;

if (!tool.isInline()) {
if ('isInline' in tool && tool.isInline() === false) {
return;
}

Expand Down
6 changes: 0 additions & 6 deletions packages/core/src/entities/Config.ts

This file was deleted.

3 changes: 0 additions & 3 deletions packages/core/src/entities/index.ts

This file was deleted.

15 changes: 2 additions & 13 deletions packages/core/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,13 @@ import { CollaborationManager } from '@editorjs/collaboration-manager';
import { type DocumentId, EditorJSModel, EventType } from '@editorjs/model';
import type { ContainerInstance } from 'typedi';
import { Container } from 'typedi';
import { CoreEventType } from './components/EventBus/index.js';
import { EventBus, UiComponentType } from '@editorjs/sdk';
import { CoreEventType, EventBus, UiComponentType } from '@editorjs/sdk';
import { composeDataFromVersion2 } from './utils/composeDataFromVersion2.js';
import ToolsManager from './tools/ToolsManager.js';
import { CaretAdapter, FormattingAdapter } from '@editorjs/dom-adapters';
import type { CoreConfigValidated } from './entities/Config.js';
import type { CoreConfig } from '@editorjs/sdk';
import type { CoreConfigValidated, CoreConfig, EditorjsPluginConstructor } from '@editorjs/sdk';
import { BlocksManager } from './components/BlockManager.js';
import { SelectionManager } from './components/SelectionManager.js';
import type { EditorjsPluginConstructor } from './entities/EditorjsPlugin.js';
import { EditorAPI } from './api/index.js';
import { generateId } from './utils/uid.js';

Expand Down Expand Up @@ -219,11 +216,3 @@ export default class Core {
}
}
}

/**
* @todo move to "sdk" package
*/
export type * from './entities/index.js';
export * from './components/EventBus/index.js';
export * from './api/index.js';
export * from './tools/facades/index.js';
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
/* eslint-disable jsdoc/informative-docs */
import type { BlockToolConstructor, InlineToolConstructor } from '@editorjs/sdk';
import { InternalInlineToolSettings, InternalTuneSettings } from './BaseToolFacade.js';
import { InlineToolFacade } from './InlineToolFacade.js';
import { BlockTuneFacade } from './BlockTuneFacade.js';
import { BlockToolFacade } from './BlockToolFacade.js';
// import type ApiModule from '../modules/api';
import type { BlockToolConstructor, EditorAPI, InlineToolConstructor, UnifiedToolConfig } from '@editorjs/sdk';
import {
InternalInlineToolSettings,
InternalTuneSettings,
InlineToolFacade,
BlockTuneFacade,
BlockToolFacade
} from '@editorjs/sdk'; ;
import type {
ToolConstructable,
EditorConfig,
InlineToolConstructable,
BlockTuneConstructable
} from '@editorjs/editorjs';
import type { UnifiedToolConfig } from '../../entities/UnifiedToolConfig.js';

type ToolConstructor = typeof InlineToolFacade | typeof BlockToolFacade | typeof BlockTuneFacade;

Expand All @@ -27,8 +28,8 @@ export class ToolsFactory {
/**
* EditorJS API Module
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
private api: any;

private api: EditorAPI;

/**
* EditorJS configuration
Expand All @@ -47,7 +48,6 @@ export class ToolsFactory {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
api: any
) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
this.api = api;
this.config = config;
this.editorConfig = editorConfig;
Expand All @@ -63,7 +63,6 @@ export class ToolsFactory {
const Constructor = this.getConstructor(constructable);
// const isTune = constructable[InternalTuneSettings.IsTune];

// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
return new Constructor({
name,
constructable,
Expand Down
27 changes: 15 additions & 12 deletions packages/core/src/tools/ToolsManager.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,30 @@
import type { BlockToolConstructor } from '@editorjs/sdk';
import type {
BlockToolConstructor,
UnifiedToolConfig
} from '@editorjs/sdk';
import 'reflect-metadata';
import { deepMerge, isFunction, isObject, PromiseQueue } from '@editorjs/helpers';
import { Inject, Service } from 'typedi';
import {
BlockToolFacade, BlockTuneFacade,
InlineToolFacade,
ToolFacadeClass,
ToolsCollection,
ToolsFactory
} from './facades/index.js';
import { ToolsFactory } from './ToolsFactory.js';
import { Paragraph } from './internal/block-tools/paragraph/index.js';
import type {
EditorConfig,
ToolConstructable,
ToolSettings
} from '@editorjs/editorjs';
import { InlineTool, InlineToolConstructor } from '@editorjs/sdk';
import type { UnifiedToolConfig } from '../entities/index.js';
import {
InlineTool,
InlineToolConstructor,
ToolLoadedCoreEvent,
BlockToolFacade, BlockTuneFacade,
InlineToolFacade,
ToolFacadeClass,
ToolsCollection,
EventBus
} from '@editorjs/sdk';
import BoldInlineTool from './internal/inline-tools/bold/index.js';
import ItalicInlineTool from './internal/inline-tools/italic/index.js';
import LinkInlineTool from './internal/inline-tools/link/index.js';
import { ToolLoadedCoreEvent } from '../components/EventBus/index.js';
import { EventBus } from '@editorjs/sdk';

/**
* Works with tools
Expand Down
6 changes: 0 additions & 6 deletions packages/core/src/tools/facades/index.ts

This file was deleted.

9 changes: 9 additions & 0 deletions packages/dom-adapters/.eslintrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,15 @@ rules:
- always
'@typescript-eslint/no-unsafe-declaration-merging':
- 0
# @todo: remove when we setup eslint to correctly handle the types
'@typescript-eslint/no-unsafe-call':
- 0
'@typescript-eslint/no-unsafe-member-access':
- 0
'@typescript-eslint/no-unsafe-assignment':
- 0
'@typescript-eslint/no-unsafe-argument':
- 0
env:
browser: true

Expand Down
6 changes: 5 additions & 1 deletion packages/dom-adapters/src/BlockToolAdapter/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
isNonTextInput
} from '../utils/index.js';
import { InputType } from './types/InputType.js';
import type { BlockToolAdapter as BlockToolAdapterInterface, CoreConfig } from '@editorjs/sdk';
import { type BlockToolAdapter as BlockToolAdapterInterface, type CoreConfig } from '@editorjs/sdk';
import type { FormattingAdapter } from '../FormattingAdapter/index.js';
import type { EventBus } from '@editorjs/sdk';

Expand Down Expand Up @@ -86,6 +86,10 @@ export class BlockToolAdapter implements BlockToolAdapterInterface {
this.#caretAdapter = caretAdapter;
this.#formattingAdapter = formattingAdapter;
this.#toolName = toolName;

// eventBus.addEventListener(BeforeInputUIEventName, (event: BeforeInputUIEvent) => {
// console.log('BeforeInputUIEventName', event);
// });
}

/**
Expand Down
1 change: 1 addition & 0 deletions packages/sdk/eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export default [
],
ignoreTypeImport: true,
}],
'n/no-missing-import': 'off',
},
},
];
15 changes: 8 additions & 7 deletions packages/sdk/package.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
{
"name": "@editorjs/sdk",
"version": "0.0.0",
"version": "0.1.0",
"packageManager": "yarn@4.0.1",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"type": "module",
"scripts": {
"build": "tsc",
"build": "yarn clear && tsc --build tsconfig.build.json",
"lint": "eslint",
"lint:ci": "yarn lint --max-warnings 0",
"lint:fix": "yarn lint --fix"
"lint:fix": "yarn lint --fix",
"clear": "rm -rf dist && rm -f tsconfig.build.tsbuildinfo && rm -f tsconfig.tsbuildinfo"
},
"devDependencies": {
"@types/eslint": "^8",
"eslint": "^8.38.0",
"eslint-config-codex": "^1.7.2",
"eslint-plugin-import": "^2.29.0",
"@types/eslint": "^9.6.1",
"eslint": "^9.24.0",
"eslint-config-codex": "^2.0.3",
"eslint-plugin-import": "^2.31.0",
"ts-node": "^10.9.2",
"typescript": "^5.5.4"
},
Expand Down
Loading
Loading