Add Bun support and improve build process
Updated project to use Bun runtime, including changes to build and development scripts, plugin additions, and configuration updates in tsconfig.json and package.json. Enhanced README documentation and migrated source files to TypeScript.
This commit is contained in:
98
README.md
98
README.md
@@ -2,14 +2,11 @@
|
|||||||
|
|
||||||
> Created to push creative limits.
|
> Created to push creative limits.
|
||||||
|
|
||||||
Process git repository files into markdown with token counting and sensitive
|
Process git repository files into markdown with token counting and sensitive data redaction.
|
||||||
data redaction.
|
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
`code-tokenizer-md` is a Node.js tool that processes git repository files,
|
`code-tokenizer-md` is a TypeScript/Bun tool that processes git repository files, cleans code, redacts sensitive information, and generates markdown documentation with token counts.
|
||||||
cleans code, redacts sensitive information, and generates markdown documentation
|
|
||||||
with token counts.
|
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
graph TD
|
graph TD
|
||||||
@@ -52,26 +49,31 @@ graph TD
|
|||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- Node.js (>=14.0.0)
|
- Node.js (>=14.0.0)
|
||||||
|
- Bun runtime
|
||||||
- Git repository
|
- Git repository
|
||||||
- npm or npx
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
```shell
|
|
||||||
npm install -g code-tokenizer-md
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
### Quick Start
|
### CLI
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
npx code-tokenizer-md
|
npx code-tokenizer-md
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Library
|
||||||
|
###
|
||||||
|
```shell
|
||||||
|
npm install code-tokenizer-md
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### Programmatic Usage
|
### Programmatic Usage
|
||||||
|
|
||||||
```javascript
|
```typescript
|
||||||
import { MarkdownGenerator } from 'code-tokenizer-md';
|
import { MarkdownGenerator } from 'code-tokenizer-md';
|
||||||
|
|
||||||
const generator = new MarkdownGenerator({
|
const generator = new MarkdownGenerator({
|
||||||
@@ -86,10 +88,12 @@ const result = await generator.createMarkdownDocument();
|
|||||||
|
|
||||||
```
|
```
|
||||||
src/
|
src/
|
||||||
├── index.js # Main exports
|
├── index.ts # Main exports
|
||||||
├── TokenCleaner.js # Code cleaning and redaction
|
├── TokenCleaner.ts # Code cleaning and redaction
|
||||||
├── MarkdownGenerator.js # Markdown generation logic
|
├── MarkdownGenerator.ts # Markdown generation logic
|
||||||
└── cli.js # CLI implementation
|
├── cli.ts # CLI implementation
|
||||||
|
├── fileExclusions.ts # File exclusion patterns
|
||||||
|
└── fileTypeExclusions.ts # File type exclusions
|
||||||
```
|
```
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
@@ -97,25 +101,81 @@ src/
|
|||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"llama3-tokenizer-js": "^1.0.0"
|
"llama3-tokenizer-js": "^1.0.0",
|
||||||
|
"micromatch": "^4.0.8"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"node": ">=14.0.0"
|
"node": ">=14.0.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@eslint/js": "^9.14.0",
|
||||||
|
"eslint": "^9.14.0",
|
||||||
|
"globals": "^15.12.0",
|
||||||
|
"prettier": "^3.3.3",
|
||||||
|
"bun": "latest",
|
||||||
|
"@types/bun": "latest",
|
||||||
|
"@types/node": "^22.9.1",
|
||||||
|
"@types/micromatch": "^4.0.9"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
This project uses [bun](https://github.com/oven-sh/bun) for it's toolchain. You should be able to use whatever you want as a consumer of the library.
|
||||||
|
|
||||||
|
### Building
|
||||||
|
```shell
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm test
|
||||||
|
```
|
||||||
|
|
||||||
|
### Linting and Formatting
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Lint
|
||||||
|
npm run lint
|
||||||
|
|
||||||
|
# Fix linting issues
|
||||||
|
npm run lint:fix
|
||||||
|
|
||||||
|
# Format code
|
||||||
|
npm run format
|
||||||
|
|
||||||
|
# Fix all (format + lint)
|
||||||
|
npm run fix
|
||||||
|
```
|
||||||
|
|
||||||
## Extending
|
## Extending
|
||||||
|
|
||||||
### Adding Custom Patterns
|
### Adding Custom Patterns
|
||||||
|
|
||||||
```javascript
|
```typescript
|
||||||
const generator = new MarkdownGenerator({
|
const generator = new MarkdownGenerator({
|
||||||
customPatterns: [{ regex: /TODO:/g, replacement: '' }],
|
customPatterns: [{ regex: /TODO:/g, replacement: '' }],
|
||||||
customSecretPatterns: [{ regex: /mySecret/g, replacement: '[REDACTED]' }],
|
customSecretPatterns: [{ regex: /mySecret/g, replacement: '[REDACTED]' }],
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Configuration Options
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface MarkdownGeneratorOptions {
|
||||||
|
dir?: string; // Project directory
|
||||||
|
outputFilePath?: string; // Output markdown file path
|
||||||
|
fileTypeExclusions?: Set<string>; // File types to exclude
|
||||||
|
fileExclusions?: string[]; // File patterns to exclude
|
||||||
|
customPatterns?: Record<string, any>; // Custom cleaning patterns
|
||||||
|
customSecretPatterns?: Record<string, any>; // Custom redaction patterns
|
||||||
|
verbose?: boolean; // Enable verbose logging
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
1. Fork the repository
|
1. Fork the repository
|
||||||
@@ -126,10 +186,10 @@ const generator = new MarkdownGenerator({
|
|||||||
|
|
||||||
### Contribution Guidelines
|
### Contribution Guidelines
|
||||||
|
|
||||||
- Follow Node.js best practices
|
- Write TypeScript code following the project's style
|
||||||
- Include appropriate error handling
|
- Include appropriate error handling
|
||||||
- Add documentation for new features
|
- Add documentation for new features
|
||||||
- Include tests for new functionality (this project needs a suite)
|
- Include tests for new functionality
|
||||||
- Update the README for significant changes
|
- Update the README for significant changes
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
9
build.ts
9
build.ts
@@ -1,5 +1,12 @@
|
|||||||
|
import isolatedDecl from 'bun-plugin-isolated-decl';
|
||||||
|
|
||||||
await Bun.build({
|
await Bun.build({
|
||||||
entrypoints: ['./src/cli.ts'],
|
entrypoints: ['./src/cli.ts', './src/index.ts'],
|
||||||
outdir: './dist',
|
outdir: './dist',
|
||||||
target: 'node',
|
target: 'node',
|
||||||
|
plugins: [
|
||||||
|
isolatedDecl({
|
||||||
|
forceGenerate: true, // Generate declaration files even if there are errors
|
||||||
|
})
|
||||||
|
],
|
||||||
});
|
});
|
31
package.json
31
package.json
@@ -1,20 +1,30 @@
|
|||||||
{
|
{
|
||||||
"name": "code-tokenizer-md",
|
"name": "code-tokenizer-md",
|
||||||
"version": "1.0.11",
|
"version": "1.0.12",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "dist/index.js",
|
"main": "src/index.ts",
|
||||||
|
"module": "src/index.ts",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"import": {
|
||||||
|
"types": "./src/index.ts",
|
||||||
|
"default": "./dist/index.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"code-tokenizer-md": "./dist/cli.js"
|
"code-tokenizer-md": "./dist/cli.js"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
],
|
],
|
||||||
|
"types": "",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "rm -rf dist && bun run build.ts",
|
"build": "rm -rf dist && bun ./build.ts",
|
||||||
"test": "bun test",
|
"test": "bun test",
|
||||||
"prepublishOnly": "npm run build",
|
"prepublishOnly": "npm run build",
|
||||||
"dev": "npx .",
|
"dev": "bun run .",
|
||||||
"deploy:dev": "pnpm build && pnpm publish .",
|
"deploy:dev": "bun run build && pnpm publish .",
|
||||||
"lint": "eslint src/",
|
"lint": "eslint src/",
|
||||||
"lint:fix": "eslint src/ --fix",
|
"lint:fix": "eslint src/ --fix",
|
||||||
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md,yml,yaml}\"",
|
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md,yml,yaml}\"",
|
||||||
@@ -29,12 +39,15 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^9.14.0",
|
"@eslint/js": "^9.14.0",
|
||||||
|
"@types/bun": "latest",
|
||||||
|
"@types/micromatch": "^4.0.9",
|
||||||
|
"@types/node": "^22.9.1",
|
||||||
|
"bun": "latest",
|
||||||
|
"bun-plugin-isolated-decl": "^0.1.6",
|
||||||
"eslint": "^9.14.0",
|
"eslint": "^9.14.0",
|
||||||
"globals": "^15.12.0",
|
"globals": "^15.12.0",
|
||||||
|
"oxc-transform": "^0.37.0",
|
||||||
"prettier": "^3.3.3",
|
"prettier": "^3.3.3",
|
||||||
"bun": "latest",
|
"typescript": "^5.6.3"
|
||||||
"@types/bun": "latest",
|
|
||||||
"@types/node": "^22.9.1",
|
|
||||||
"@types/micromatch": "^4.0.9"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -7,7 +7,6 @@
|
|||||||
"moduleDetection": "force",
|
"moduleDetection": "force",
|
||||||
"jsx": "react-jsx",
|
"jsx": "react-jsx",
|
||||||
"allowJs": true,
|
"allowJs": true,
|
||||||
|
|
||||||
// Bundler mode
|
// Bundler mode
|
||||||
"moduleResolution": "bundler",
|
"moduleResolution": "bundler",
|
||||||
"allowImportingTsExtensions": true,
|
"allowImportingTsExtensions": true,
|
||||||
|
Reference in New Issue
Block a user