diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f138e1c..95b51e2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,6 +35,7 @@ jobs: # The package publishes source with types from dist, so a passing build # is not proof the tarball is complete — check what npm would ship. - name: Verify the publishable tarball + working-directory: packages/scribo run: | set -euo pipefail npm pack --dry-run 2>&1 | tee /tmp/pack.log diff --git a/package.json b/package.json index 7cf3a56..eaf90ab 100644 --- a/package.json +++ b/package.json @@ -1,86 +1,15 @@ { - "name": "@eventuras/scribo", - "version": "0.10.7", - "description": "Markdown editor built on Lexical — WYSIWYG editing with markdown export", - "license": "MIT", - "homepage": "https://scribo.losol.no/", - "repository": { - "type": "git", - "url": "https://github.com/losol/scribo.git" - }, - "bugs": { - "url": "https://github.com/losol/scribo/issues" - }, + "name": "scribo-workspace", + "private": true, "type": "module", - "exports": { - ".": { - "types": "./dist/main.d.ts", - "default": "./src/main.tsx" - }, - "./plugins/schedule": { - "types": "./dist/nodes/schedule/index.d.ts", - "default": "./src/nodes/schedule/index.ts" - }, - "./plugins/callout": { - "types": "./dist/nodes/callout/index.d.ts", - "default": "./src/nodes/callout/index.ts" - }, - "./style.css": "./dist/scribo.css" - }, - "main": "src/main.tsx", - "scripts": { - "build": "vite build", - "build:site": "vite build --config vite.config.site.ts", - "dev": "vite", - "lint": "biome check .", - "test": "vitest run", - "format": "biome format --write .", - "format:check": "biome format --check ." - }, - "overrides": { - "vite": { - "rollup": "npm:@rollup/wasm-node" - } - }, - "dependencies": { - "@lexical/code": "0.50.0", - "@lexical/hashtag": "0.50.0", - "@lexical/link": "0.50.0", - "@lexical/list": "0.50.0", - "@lexical/mark": "0.50.0", - "@lexical/markdown": "0.50.0", - "@lexical/overflow": "0.50.0", - "@lexical/react": "^0.50.0", - "@lexical/rich-text": "0.50.0", - "@lexical/selection": "0.50.0", - "@lexical/table": "0.50.0", - "@lexical/utils": "0.50.0", - "lexical": "0.50.0", - "prismjs": "^1.30.0", - "yjs": "^13.6.32" - }, - "devDependencies": { - "@biomejs/biome": "^2.5.13", - "@changesets/changelog-github": "^1.0.1", - "@changesets/cli": "^3.0.2", - "@eventuras/typescript-config": "^1.0.0", - "@eventuras/vite-config": "^0.3.1", - "@testing-library/react": "^16.3.2", - "@types/react": "^19.3.0", - "@types/react-dom": "^19.3.0", - "@typescript/typescript6": "^6.0.2", - "@vitejs/plugin-react": "^6.0.5", - "lightningcss": "^1.33.0", - "typescript": "^7.0.2", - "vite": "^8.3.0", - "vitest": "^5.0.0" - }, - "peerDependencies": { - "react": "^19.0.0", - "react-dom": "^19.0.0" - }, "packageManager": "pnpm@11.8.0", - "engines": { - "node": ">=24.0.0 <25.0.0" + "scripts": { + "build": "pnpm --dir packages/scribo build", + "build:site": "pnpm --dir packages/scribo build:site", + "dev": "pnpm --dir packages/scribo dev", + "lint": "pnpm --dir packages/scribo lint", + "test": "pnpm --dir packages/scribo test", + "format": "pnpm --dir packages/scribo format", + "format:check": "pnpm --dir packages/scribo format:check" } } diff --git a/index.html b/packages/scribo/index.html similarity index 100% rename from index.html rename to packages/scribo/index.html diff --git a/packages/scribo/package.json b/packages/scribo/package.json new file mode 100644 index 0000000..7cf3a56 --- /dev/null +++ b/packages/scribo/package.json @@ -0,0 +1,86 @@ +{ + "name": "@eventuras/scribo", + "version": "0.10.7", + "description": "Markdown editor built on Lexical — WYSIWYG editing with markdown export", + "license": "MIT", + "homepage": "https://scribo.losol.no/", + "repository": { + "type": "git", + "url": "https://github.com/losol/scribo.git" + }, + "bugs": { + "url": "https://github.com/losol/scribo/issues" + }, + "type": "module", + "exports": { + ".": { + "types": "./dist/main.d.ts", + "default": "./src/main.tsx" + }, + "./plugins/schedule": { + "types": "./dist/nodes/schedule/index.d.ts", + "default": "./src/nodes/schedule/index.ts" + }, + "./plugins/callout": { + "types": "./dist/nodes/callout/index.d.ts", + "default": "./src/nodes/callout/index.ts" + }, + "./style.css": "./dist/scribo.css" + }, + "main": "src/main.tsx", + "scripts": { + "build": "vite build", + "build:site": "vite build --config vite.config.site.ts", + "dev": "vite", + "lint": "biome check .", + "test": "vitest run", + "format": "biome format --write .", + "format:check": "biome format --check ." + }, + "overrides": { + "vite": { + "rollup": "npm:@rollup/wasm-node" + } + }, + "dependencies": { + "@lexical/code": "0.50.0", + "@lexical/hashtag": "0.50.0", + "@lexical/link": "0.50.0", + "@lexical/list": "0.50.0", + "@lexical/mark": "0.50.0", + "@lexical/markdown": "0.50.0", + "@lexical/overflow": "0.50.0", + "@lexical/react": "^0.50.0", + "@lexical/rich-text": "0.50.0", + "@lexical/selection": "0.50.0", + "@lexical/table": "0.50.0", + "@lexical/utils": "0.50.0", + "lexical": "0.50.0", + "prismjs": "^1.30.0", + "yjs": "^13.6.32" + }, + "devDependencies": { + "@biomejs/biome": "^2.5.13", + "@changesets/changelog-github": "^1.0.1", + "@changesets/cli": "^3.0.2", + "@eventuras/typescript-config": "^1.0.0", + "@eventuras/vite-config": "^0.3.1", + "@testing-library/react": "^16.3.2", + "@types/react": "^19.3.0", + "@types/react-dom": "^19.3.0", + "@typescript/typescript6": "^6.0.2", + "@vitejs/plugin-react": "^6.0.5", + "lightningcss": "^1.33.0", + "typescript": "^7.0.2", + "vite": "^8.3.0", + "vitest": "^5.0.0" + }, + "peerDependencies": { + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "packageManager": "pnpm@11.8.0", + "engines": { + "node": ">=24.0.0 <25.0.0" + } +} diff --git a/public/vite.svg b/packages/scribo/public/vite.svg similarity index 100% rename from public/vite.svg rename to packages/scribo/public/vite.svg diff --git a/src/App.css b/packages/scribo/src/App.css similarity index 100% rename from src/App.css rename to packages/scribo/src/App.css diff --git a/src/App.tsx b/packages/scribo/src/App.tsx similarity index 100% rename from src/App.tsx rename to packages/scribo/src/App.tsx diff --git a/src/MarkdownEditor.css b/packages/scribo/src/MarkdownEditor.css similarity index 100% rename from src/MarkdownEditor.css rename to packages/scribo/src/MarkdownEditor.css diff --git a/src/MarkdownEditor.tsx b/packages/scribo/src/MarkdownEditor.tsx similarity index 100% rename from src/MarkdownEditor.tsx rename to packages/scribo/src/MarkdownEditor.tsx diff --git a/src/MarkdownInput.tsx b/packages/scribo/src/MarkdownInput.tsx similarity index 100% rename from src/MarkdownInput.tsx rename to packages/scribo/src/MarkdownInput.tsx diff --git a/src/context/SharedHistoryContext.tsx b/packages/scribo/src/context/SharedHistoryContext.tsx similarity index 100% rename from src/context/SharedHistoryContext.tsx rename to packages/scribo/src/context/SharedHistoryContext.tsx diff --git a/src/index.tsx b/packages/scribo/src/index.tsx similarity index 89% rename from src/index.tsx rename to packages/scribo/src/index.tsx index 27e37e2..86cbd69 100644 --- a/src/index.tsx +++ b/packages/scribo/src/index.tsx @@ -4,7 +4,7 @@ import { App } from './App'; import './App.css'; import './MarkdownEditor.css'; -import readmeRaw from '../README.md?raw'; +import readmeRaw from '../../../README.md?raw'; const rootElement = document.getElementById('root'); diff --git a/src/main.tsx b/packages/scribo/src/main.tsx similarity index 100% rename from src/main.tsx rename to packages/scribo/src/main.tsx diff --git a/src/nodes/EditorNodes.ts b/packages/scribo/src/nodes/EditorNodes.ts similarity index 100% rename from src/nodes/EditorNodes.ts rename to packages/scribo/src/nodes/EditorNodes.ts diff --git a/src/nodes/callout/Callout.css b/packages/scribo/src/nodes/callout/Callout.css similarity index 100% rename from src/nodes/callout/Callout.css rename to packages/scribo/src/nodes/callout/Callout.css diff --git a/src/nodes/callout/CalloutComponent.tsx b/packages/scribo/src/nodes/callout/CalloutComponent.tsx similarity index 100% rename from src/nodes/callout/CalloutComponent.tsx rename to packages/scribo/src/nodes/callout/CalloutComponent.tsx diff --git a/src/nodes/callout/CalloutNode.ts b/packages/scribo/src/nodes/callout/CalloutNode.ts similarity index 100% rename from src/nodes/callout/CalloutNode.ts rename to packages/scribo/src/nodes/callout/CalloutNode.ts diff --git a/src/nodes/callout/CalloutTransformer.ts b/packages/scribo/src/nodes/callout/CalloutTransformer.ts similarity index 100% rename from src/nodes/callout/CalloutTransformer.ts rename to packages/scribo/src/nodes/callout/CalloutTransformer.ts diff --git a/src/nodes/callout/calloutPlugin.ts b/packages/scribo/src/nodes/callout/calloutPlugin.ts similarity index 100% rename from src/nodes/callout/calloutPlugin.ts rename to packages/scribo/src/nodes/callout/calloutPlugin.ts diff --git a/src/nodes/callout/index.ts b/packages/scribo/src/nodes/callout/index.ts similarity index 100% rename from src/nodes/callout/index.ts rename to packages/scribo/src/nodes/callout/index.ts diff --git a/src/nodes/schedule/ScheduleItem.css b/packages/scribo/src/nodes/schedule/ScheduleItem.css similarity index 100% rename from src/nodes/schedule/ScheduleItem.css rename to packages/scribo/src/nodes/schedule/ScheduleItem.css diff --git a/src/nodes/schedule/ScheduleItemComponent.tsx b/packages/scribo/src/nodes/schedule/ScheduleItemComponent.tsx similarity index 100% rename from src/nodes/schedule/ScheduleItemComponent.tsx rename to packages/scribo/src/nodes/schedule/ScheduleItemComponent.tsx diff --git a/src/nodes/schedule/ScheduleItemNode.ts b/packages/scribo/src/nodes/schedule/ScheduleItemNode.ts similarity index 100% rename from src/nodes/schedule/ScheduleItemNode.ts rename to packages/scribo/src/nodes/schedule/ScheduleItemNode.ts diff --git a/src/nodes/schedule/ScheduleTransformer.test.ts b/packages/scribo/src/nodes/schedule/ScheduleTransformer.test.ts similarity index 100% rename from src/nodes/schedule/ScheduleTransformer.test.ts rename to packages/scribo/src/nodes/schedule/ScheduleTransformer.test.ts diff --git a/src/nodes/schedule/ScheduleTransformer.ts b/packages/scribo/src/nodes/schedule/ScheduleTransformer.ts similarity index 100% rename from src/nodes/schedule/ScheduleTransformer.ts rename to packages/scribo/src/nodes/schedule/ScheduleTransformer.ts diff --git a/src/nodes/schedule/index.ts b/packages/scribo/src/nodes/schedule/index.ts similarity index 100% rename from src/nodes/schedule/index.ts rename to packages/scribo/src/nodes/schedule/index.ts diff --git a/src/nodes/schedule/schedulePlugin.ts b/packages/scribo/src/nodes/schedule/schedulePlugin.ts similarity index 100% rename from src/nodes/schedule/schedulePlugin.ts rename to packages/scribo/src/nodes/schedule/schedulePlugin.ts diff --git a/src/plugins/AutoLinkPlugin.tsx b/packages/scribo/src/plugins/AutoLinkPlugin.tsx similarity index 100% rename from src/plugins/AutoLinkPlugin.tsx rename to packages/scribo/src/plugins/AutoLinkPlugin.tsx diff --git a/src/plugins/FloatingLinkEditorPlugin.css b/packages/scribo/src/plugins/FloatingLinkEditorPlugin.css similarity index 100% rename from src/plugins/FloatingLinkEditorPlugin.css rename to packages/scribo/src/plugins/FloatingLinkEditorPlugin.css diff --git a/src/plugins/FloatingLinkEditorPlugin.tsx b/packages/scribo/src/plugins/FloatingLinkEditorPlugin.tsx similarity index 100% rename from src/plugins/FloatingLinkEditorPlugin.tsx rename to packages/scribo/src/plugins/FloatingLinkEditorPlugin.tsx diff --git a/src/plugins/HistoryPlugin.tsx b/packages/scribo/src/plugins/HistoryPlugin.tsx similarity index 100% rename from src/plugins/HistoryPlugin.tsx rename to packages/scribo/src/plugins/HistoryPlugin.tsx diff --git a/src/plugins/LinkPlugin.tsx b/packages/scribo/src/plugins/LinkPlugin.tsx similarity index 100% rename from src/plugins/LinkPlugin.tsx rename to packages/scribo/src/plugins/LinkPlugin.tsx diff --git a/src/plugins/ToolbarPlugin.tsx b/packages/scribo/src/plugins/ToolbarPlugin.tsx similarity index 100% rename from src/plugins/ToolbarPlugin.tsx rename to packages/scribo/src/plugins/ToolbarPlugin.tsx diff --git a/src/themes/EditorTheme.css b/packages/scribo/src/themes/EditorTheme.css similarity index 100% rename from src/themes/EditorTheme.css rename to packages/scribo/src/themes/EditorTheme.css diff --git a/src/themes/EditorTheme.ts b/packages/scribo/src/themes/EditorTheme.ts similarity index 100% rename from src/themes/EditorTheme.ts rename to packages/scribo/src/themes/EditorTheme.ts diff --git a/src/types.ts b/packages/scribo/src/types.ts similarity index 100% rename from src/types.ts rename to packages/scribo/src/types.ts diff --git a/src/ui/ContentEditable.css b/packages/scribo/src/ui/ContentEditable.css similarity index 100% rename from src/ui/ContentEditable.css rename to packages/scribo/src/ui/ContentEditable.css diff --git a/src/ui/ContentEditable.tsx b/packages/scribo/src/ui/ContentEditable.tsx similarity index 100% rename from src/ui/ContentEditable.tsx rename to packages/scribo/src/ui/ContentEditable.tsx diff --git a/src/ui/DropDown.tsx b/packages/scribo/src/ui/DropDown.tsx similarity index 100% rename from src/ui/DropDown.tsx rename to packages/scribo/src/ui/DropDown.tsx diff --git a/src/ui/Placeholder.css b/packages/scribo/src/ui/Placeholder.css similarity index 100% rename from src/ui/Placeholder.css rename to packages/scribo/src/ui/Placeholder.css diff --git a/src/ui/Placeholder.tsx b/packages/scribo/src/ui/Placeholder.tsx similarity index 100% rename from src/ui/Placeholder.tsx rename to packages/scribo/src/ui/Placeholder.tsx diff --git a/src/utils/environment.ts b/packages/scribo/src/utils/environment.ts similarity index 100% rename from src/utils/environment.ts rename to packages/scribo/src/utils/environment.ts diff --git a/src/utils/getSelectedNode.ts b/packages/scribo/src/utils/getSelectedNode.ts similarity index 100% rename from src/utils/getSelectedNode.ts rename to packages/scribo/src/utils/getSelectedNode.ts diff --git a/src/utils/setFloatingElemPosition.ts b/packages/scribo/src/utils/setFloatingElemPosition.ts similarity index 100% rename from src/utils/setFloatingElemPosition.ts rename to packages/scribo/src/utils/setFloatingElemPosition.ts diff --git a/src/utils/setFloatingElemPositionForLinkEditor.ts b/packages/scribo/src/utils/setFloatingElemPositionForLinkEditor.ts similarity index 100% rename from src/utils/setFloatingElemPositionForLinkEditor.ts rename to packages/scribo/src/utils/setFloatingElemPositionForLinkEditor.ts diff --git a/src/utils/url.ts b/packages/scribo/src/utils/url.ts similarity index 100% rename from src/utils/url.ts rename to packages/scribo/src/utils/url.ts diff --git a/src/vite-env.d.ts b/packages/scribo/src/vite-env.d.ts similarity index 100% rename from src/vite-env.d.ts rename to packages/scribo/src/vite-env.d.ts diff --git a/tsconfig.json b/packages/scribo/tsconfig.json similarity index 100% rename from tsconfig.json rename to packages/scribo/tsconfig.json diff --git a/tsconfig.node.json b/packages/scribo/tsconfig.node.json similarity index 100% rename from tsconfig.node.json rename to packages/scribo/tsconfig.node.json diff --git a/vite.config.site.ts b/packages/scribo/vite.config.site.ts similarity index 100% rename from vite.config.site.ts rename to packages/scribo/vite.config.site.ts diff --git a/vite.config.ts b/packages/scribo/vite.config.ts similarity index 100% rename from vite.config.ts rename to packages/scribo/vite.config.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 97f8338..3157171 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,9 @@ settings: importers: - .: + .: {} + + packages/scribo: dependencies: '@lexical/code': specifier: 0.50.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c4cfebc..5b19b8b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,5 @@ -# Single-package repo; the file exists so pnpm settings live outside package.json -# (pnpm 11 no longer reads the `pnpm` field there). +packages: + - 'packages/*' # Allow-list of packages whose install scripts may run. allowBuilds: