diff --git a/.github/workflows/bold.yml b/.github/workflows/bold.yml new file mode 100644 index 00000000..6b1bf8d4 --- /dev/null +++ b/.github/workflows/bold.yml @@ -0,0 +1,27 @@ +name: Bold check +on: + pull_request: + merge_group: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - name: Run ESLint check + uses: ./.github/actions/lint + with: + package-name: '@editorjs/bold' + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - name: Build the package + uses: ./.github/actions/build + with: + package-name: '@editorjs/bold' diff --git a/README.md b/README.md index 41b5c2ba..6a65312b 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ A model-driven, collaboration-ready Editor.js engine split into focused packages | Package | Description | |---|---| | [`@editorjs/paragraph`](packages/tools/paragraph) | Built-in Paragraph block tool | +| [`@editorjs/bold`](packages/tools/bold) | Built-in Bold inline tool | ## Documentation diff --git a/packages/core/package.json b/packages/core/package.json index 9743e1b0..19cc5d32 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -39,6 +39,7 @@ }, "dependencies": { "@codexteam/icons": "^0.3.3", + "@editorjs/bold": "workspace:^", "@editorjs/collaboration-manager": "workspace:^", "@editorjs/dom": "^1.1.0", "@editorjs/dom-adapters": "workspace:^", diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 02cacae5..5c72b5d6 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -20,7 +20,8 @@ import type { CoreConfigValidated, CoreConfig, EditorjsPluginConstructor, BlockT import { EditorAPI } from './api/index.js'; import { generateId } from './utils/uid.js'; import { Paragraph } from '@editorjs/paragraph'; -import { BoldInlineTool, LinkInlineTool, ItalicInlineTool } from './tools/internal'; +import { BoldInlineTool } from '@editorjs/bold'; +import { LinkInlineTool, ItalicInlineTool } from './tools/internal'; import { ShortcutsPlugin } from './plugins/ShortcutsPlugin.js'; import { DOMAdapters } from '@editorjs/dom-adapters'; import { BlocksManager } from './components/BlockManager.js'; diff --git a/packages/core/src/tools/internal/index.ts b/packages/core/src/tools/internal/index.ts index f7b4d143..c27bb03c 100644 --- a/packages/core/src/tools/internal/index.ts +++ b/packages/core/src/tools/internal/index.ts @@ -1,3 +1,2 @@ -export * from './inline-tools/bold/index.js'; export * from './inline-tools/italic/index.js'; export * from './inline-tools/link/index.js'; diff --git a/packages/core/tsconfig.build.json b/packages/core/tsconfig.build.json index df3df6e2..873030c3 100644 --- a/packages/core/tsconfig.build.json +++ b/packages/core/tsconfig.build.json @@ -18,6 +18,9 @@ }, { "path": "../tools/paragraph/tsconfig.build.json" + }, + { + "path": "../tools/bold/tsconfig.build.json" } ] } diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 65da1372..202e4f1d 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -37,6 +37,9 @@ }, { "path": "../tools/paragraph/tsconfig.build.json" + }, + { + "path": "../tools/bold/tsconfig.build.json" } ] } diff --git a/packages/tools/bold/.gitignore b/packages/tools/bold/.gitignore new file mode 100644 index 00000000..854a697d --- /dev/null +++ b/packages/tools/bold/.gitignore @@ -0,0 +1,24 @@ +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions + +# Swap the comments on the following lines if you don't wish to use zero-installs +# Documentation here: https://yarnpkg.com/features/zero-installs +#!.yarn/cache +#.pnp.* + +# IDE +.idea/* + +node_modules/* +dist/* + +# tests +coverage/ +reports/ + +# stryker temp files +.stryker-tmp diff --git a/packages/tools/bold/README.md b/packages/tools/bold/README.md new file mode 100644 index 00000000..541bd33d --- /dev/null +++ b/packages/tools/bold/README.md @@ -0,0 +1,3 @@ +# Bold + +Built-in Editor.js Inline Tool for bold text formatting. diff --git a/packages/tools/bold/eslint.config.mjs b/packages/tools/bold/eslint.config.mjs new file mode 100644 index 00000000..d27b0622 --- /dev/null +++ b/packages/tools/bold/eslint.config.mjs @@ -0,0 +1,27 @@ +import CodeX from 'eslint-config-codex'; + +export default [ + ...CodeX, + { + languageOptions: { + parserOptions: { + project: './tsconfig.eslint.json', + tsconfigRootDir: import.meta.dirname, + sourceType: 'module', + }, + }, + rules: { + 'n/no-unpublished-import': ['error', { + allowModules: [ + 'eslint-config-codex', + ], + ignoreTypeImport: true, + }], + 'n/no-missing-import': 'off', + 'n/no-unsupported-features/node-builtins': ['error', { + version: '>=24.0.0', + ignores: [], + }], + }, + }, +]; diff --git a/packages/tools/bold/package.json b/packages/tools/bold/package.json new file mode 100644 index 00000000..df2becf6 --- /dev/null +++ b/packages/tools/bold/package.json @@ -0,0 +1,29 @@ +{ + "name": "@editorjs/bold", + "version": "0.0.0", + "packageManager": "yarn@4.0.1", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "type": "module", + "scripts": { + "build": "yarn clear && tsc --build tsconfig.build.json", + "build:declaration": "yarn build --emitDeclarationOnly", + "lint": "eslint", + "lint:ci": "yarn lint --max-warnings 0", + "lint:fix": "yarn lint --fix", + "clear": "rm -rf dist && rm -f tsconfig.build.tsbuildinfo && rm -f tsconfig.tsbuildinfo" + }, + "devDependencies": { + "@types/eslint": "^9.6.1", + "@types/node": "^22.10.2", + "eslint": "^9.24.0", + "eslint-config-codex": "^2.0.3", + "eslint-plugin-import": "^2.31.0", + "typescript": "^5.5.4" + }, + "dependencies": { + "@codexteam/icons": "^0.3.3", + "@editorjs/dom": "^1.1.0", + "@editorjs/sdk": "workspace:^" + } +} diff --git a/packages/core/src/tools/internal/inline-tools/bold/index.ts b/packages/tools/bold/src/index.ts similarity index 100% rename from packages/core/src/tools/internal/inline-tools/bold/index.ts rename to packages/tools/bold/src/index.ts diff --git a/packages/tools/bold/tsconfig.build.json b/packages/tools/bold/tsconfig.build.json new file mode 100644 index 00000000..5b7ae0fc --- /dev/null +++ b/packages/tools/bold/tsconfig.build.json @@ -0,0 +1,13 @@ +{ + "extends": "./tsconfig.json", + "exclude": [ + "node_modules/**/*", + "dist/**/*", + "**/*.spec.ts" + ], + "references": [ + { + "path": "../../sdk/tsconfig.build.json" + } + ] +} diff --git a/packages/tools/bold/tsconfig.eslint.json b/packages/tools/bold/tsconfig.eslint.json new file mode 100644 index 00000000..49c276af --- /dev/null +++ b/packages/tools/bold/tsconfig.eslint.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "types": ["node"], + }, + "extends": "./tsconfig.json", + "include": [ + "src/**/*", + "eslint.config.mjs", + ], + "exclude": [ + "dist/**/*", + "node_modules/**/*", + ] +} diff --git a/packages/tools/bold/tsconfig.json b/packages/tools/bold/tsconfig.json new file mode 100644 index 00000000..8cc9fa49 --- /dev/null +++ b/packages/tools/bold/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "composite": true, + "target": "esnext", + "module": "esnext", + "moduleResolution": "bundler", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "rootDir": "src", + "outDir": "dist", + "declaration": true, + "declarationMap": true, + "sourceMap": true + }, + "include": ["src/**/*"], + "exclude": [ + "node_modules/**/*", + "dist/**/*" + ], + "references": [ + { + "path": "../../sdk/tsconfig.build.json" + } + ] +} diff --git a/yarn.lock b/yarn.lock index 4d09f6eb..81a95561 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2245,6 +2245,22 @@ __metadata: languageName: node linkType: hard +"@editorjs/bold@workspace:^, @editorjs/bold@workspace:packages/tools/bold": + version: 0.0.0-use.local + resolution: "@editorjs/bold@workspace:packages/tools/bold" + dependencies: + "@codexteam/icons": "npm:^0.3.3" + "@editorjs/dom": "npm:^1.1.0" + "@editorjs/sdk": "workspace:^" + "@types/eslint": "npm:^9.6.1" + "@types/node": "npm:^22.10.2" + eslint: "npm:^9.24.0" + eslint-config-codex: "npm:^2.0.3" + eslint-plugin-import: "npm:^2.31.0" + typescript: "npm:^5.5.4" + languageName: unknown + linkType: soft + "@editorjs/caret@npm:^1.1.0": version: 1.1.0 resolution: "@editorjs/caret@npm:1.1.0" @@ -2287,6 +2303,7 @@ __metadata: "@babel/core": "npm:^7.29.0" "@babel/preset-env": "npm:^7.29.2" "@codexteam/icons": "npm:^0.3.3" + "@editorjs/bold": "workspace:^" "@editorjs/collaboration-manager": "workspace:^" "@editorjs/dom": "npm:^1.1.0" "@editorjs/dom-adapters": "workspace:^"