e0a5f57793
Vendor the rebranded BoosAPI Desktop client (Tauri + Vue) into metapi as a monorepo subdirectory under desktop/. Source only — node_modules, dist, Cargo target and the upstream .git history are excluded. desktop/ keeps its own independent Cargo workspace (desktop/src-tauri with crates/*); it is not part of the backend boosapi crate, so a `cargo check` at the metapi root still compiles only the backend. Build the desktop app from desktop/src-tauri per desktop/README.md. Note: app icons are still placeholder assets pending the final BoosAPI logo. The updater signing keys live outside the repo and are not included.
3.4 KiB
3.4 KiB
Monorepo Migration Guide
Overview
The markdown parsing utilities have been extracted into a separate package stream-markdown-parser to enable framework-agnostic usage.
Package Structure
markstream-vue/
├── packages/
│ └── markdown-parser/ # stream-markdown-parser
│ ├── src/
│ │ ├── index.ts # Main entry
│ │ ├── config.ts # Math options config
│ │ ├── types.ts # TypeScript types
│ │ ├── parser/ # Core parsing logic
│ │ ├── plugins/ # Markdown-it plugins
│ │ │ └── math.ts # Math plugin
│ │ └── renderers/ # Custom renderers
│ ├── dist/ # Built files
│ ├── package.json
│ ├── tsconfig.json
│ └── tsup.config.ts
├── src/ # Main Vue package
│ ├── components/
│ ├── utils/
│ └── exports.ts
└── playground/
Changes
1. New Package: stream-markdown-parser
- Pure JavaScript/TypeScript - No Vue dependencies
- Framework agnostic - Can be used in any JS project
- Single entry point - All exports from main index
- Exports: Everything from
stream-markdown-parser
2. Updated Main Package
The main markstream-vue package now depends on stream-markdown-parser:
{
"dependencies": {
"stream-markdown-parser": "workspace:*"
}
}
3. Import Changes
Before:
import { getMarkdown, parseMarkdownToStructure, setDefaultMathOptions } from 'markstream-vue'
After (same for consumers):
import { getMarkdown, parseMarkdownToStructure, setDefaultMathOptions } from 'markstream-vue'
The API remains the same for end users! The change is internal.
For parser-only usage:
import {
getMarkdown,
KATEX_COMMANDS,
normalizeStandaloneBackslashT,
parseMarkdownToStructure,
setDefaultMathOptions
} from 'stream-markdown-parser'
// All exports are from the main entry point
Development
Install Dependencies
pnpm install
Build Parser Package
cd packages/markdown-parser
pnpm build
Build Main Package
cd ../..
pnpm build
Run Tests
# Test all packages
pnpm test
# Test parser only
cd packages/markdown-parser
pnpm test
Publishing
Publish Parser Package
cd packages/markdown-parser
pnpm build
npm publish
Publish Main Package
cd ../..
pnpm build
npm publish
Benefits
- Reusability: The parser can be used in non-Vue projects
- Smaller bundles: Projects that only need parsing don't need Vue
- Better separation: Clear boundary between parsing and rendering
- Independent versioning: Parser and Vue components can version separately
- Easier testing: Parser logic can be tested in isolation
Migration for Internal Code
If you're working on the codebase:
Old:
import type { ParsedNode } from './utils/markdown/types'
import { getMarkdown } from './utils/markdown'
New:
import type { ParsedNode } from 'stream-markdown-parser'
import { getMarkdown } from 'stream-markdown-parser'
Future Plans
- Add more parser utilities
- Support for custom node types in parser
- Streaming parser improvements
- Performance optimizations