chore: scaffold Bun workspace monorepo
Sets up the initial project structure: two packages (@kitchen-md/core and @kitchen-md/bin), shared tsconfig, shared fixtures, per-package test stubs (unit, integration, smoke), .gitignore, and project CLAUDE.md with Conventional Commits convention.
This commit is contained in:
16
packages/bin/package.json
Normal file
16
packages/bin/package.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "@kitchen-md/bin",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"bin": {
|
||||
"kitchen": "./src/index.ts"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "bun test",
|
||||
"build": "bun build --compile ./src/index.ts --outfile kitchen"
|
||||
},
|
||||
"dependencies": {
|
||||
"@kitchen-md/core": "workspace:*"
|
||||
}
|
||||
}
|
||||
1
packages/bin/src/index.ts
Normal file
1
packages/bin/src/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
// CLI entry point
|
||||
6
packages/bin/src/index_test.ts
Normal file
6
packages/bin/src/index_test.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import { describe, test } from "bun:test";
|
||||
|
||||
describe("cli", () => {
|
||||
test.todo("exits with non-zero code when no file argument is given");
|
||||
test.todo("exits with non-zero code when file does not exist");
|
||||
});
|
||||
5
packages/bin/src/integration_test.ts
Normal file
5
packages/bin/src/integration_test.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { describe, test } from "bun:test";
|
||||
|
||||
describe("cli — integration", () => {
|
||||
test.todo("invokes core parser and produces output for a real fixture file");
|
||||
});
|
||||
6
packages/bin/src/smoke_test.ts
Normal file
6
packages/bin/src/smoke_test.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import { describe, test } from "bun:test";
|
||||
|
||||
describe("smoke", () => {
|
||||
test.todo("kitchen --help exits with code 0");
|
||||
test.todo("kitchen parse <fixture> outputs structured JSON covering all annotation types");
|
||||
});
|
||||
3
packages/bin/tsconfig.json
Normal file
3
packages/bin/tsconfig.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "../../tsconfig.json"
|
||||
}
|
||||
12
packages/core/package.json
Normal file
12
packages/core/package.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "@kitchen-md/core",
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"main": "./src/index.ts",
|
||||
"exports": {
|
||||
".": "./src/index.ts"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "bun test"
|
||||
}
|
||||
}
|
||||
1
packages/core/src/index.ts
Normal file
1
packages/core/src/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export {};
|
||||
15
packages/core/src/index_test.ts
Normal file
15
packages/core/src/index_test.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import { describe, test } from "bun:test";
|
||||
|
||||
describe("parser", () => {
|
||||
test.todo("parses frontmatter fields as-is");
|
||||
test.todo("extracts ingredient name, quantity, and unit");
|
||||
test.todo("extracts ingredient without unit");
|
||||
test.todo("extracts multi-word ingredient name");
|
||||
test.todo("extracts cookware without quantity");
|
||||
test.todo("extracts cookware with quantity");
|
||||
test.todo("extracts multi-word cookware name");
|
||||
test.todo("extracts timer as single value");
|
||||
test.todo("extracts timer as range");
|
||||
test.todo("annotations embedded mid-sentence are captured");
|
||||
test.todo("standard Markdown elements pass through without interference");
|
||||
});
|
||||
5
packages/core/src/integration_test.ts
Normal file
5
packages/core/src/integration_test.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { describe, test } from "bun:test";
|
||||
|
||||
describe("parser — integration", () => {
|
||||
test.todo("parses the primary fixture and extracts all annotations");
|
||||
});
|
||||
3
packages/core/tsconfig.json
Normal file
3
packages/core/tsconfig.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "../../tsconfig.json"
|
||||
}
|
||||
Reference in New Issue
Block a user