Skip to content

Commit 2240b47

Browse files
committed
chore(monorepo): break out generators
1 parent 6def80a commit 2240b47

186 files changed

Lines changed: 2001 additions & 1461 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.c8rc.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
"all": true,
33
"exclude": [
44
"**/fixtures",
5-
"packages/core/src/generators/legacy-html/assets",
6-
"packages/core/src/generators/web/ui",
5+
"packages/legacy/src/generators/html/assets",
6+
"packages/react/src/generators/web/ui",
77
"**/*.d.ts"
88
]
99
}

.github/workflows/generate.yml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,36 +76,36 @@ jobs:
7676
fail-fast: false
7777
matrix:
7878
include:
79-
- target: '@node-core/doc-kit/generators/man-page'
79+
- target: '@doc-kittens/extras/man-page'
8080
input: './node/doc/api/cli.md'
8181

82-
- target: '@node-core/doc-kit/generators/addon-verify'
82+
- target: '@doc-kittens/extras/addon-verify'
8383
input: './node/doc/api/addons.md'
8484

85-
- target: '@node-core/doc-kit/generators/api-links'
85+
- target: '@doc-kittens/website/api-links'
8686
input: './node/lib/*.js'
8787
compare: object-assertion
8888

89-
- target: '@node-core/doc-kit/generators/orama-db'
89+
- target: '@doc-kittens/react/orama-db'
9090
input: './node/doc/api/*.md'
9191
compare: file-size
9292

93-
- target: '@node-core/doc-kit/generators/json-simple'
93+
- target: '@doc-kittens/extras/json-simple'
9494
input: './node/doc/api/*.md'
9595

96-
- target: '@node-core/doc-kit/generators/legacy-json'
96+
- target: '@doc-kittens/legacy/json'
9797
input: './node/doc/api/*.md'
9898
compare: object-assertion
9999

100-
- target: '@node-core/doc-kit/generators/legacy-html'
100+
- target: '@doc-kittens/legacy/html'
101101
input: './node/doc/api/*.md'
102102
compare: file-size
103103

104-
- target: '@node-core/doc-kit/generators/web'
104+
- target: '@doc-kittens/react/web'
105105
input: './node/doc/api/*.md'
106106
compare: file-size
107107

108-
- target: '@node-core/doc-kit/generators/llms-txt'
108+
- target: '@doc-kittens/website/llms-txt'
109109
input: './node/doc/api/*.md'
110110
compare: file-size
111111
steps:

CONTRIBUTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ The steps below will give you a general idea of how to prepare your local enviro
9090

9191
```bash
9292
node packages/core/bin/cli.mjs generate \
93-
-t legacy-html \
93+
-t @doc-kittens/legacy/html \
9494
-i ../node/doc/api/fs.md \
9595
-o out \
9696
--index ../node/doc/api/index.md \
@@ -110,7 +110,7 @@ The steps below will give you a general idea of how to prepare your local enviro
110110
Add `--log-level debug` before the `generate` subcommand to see the full pipeline trace:
111111

112112
```bash
113-
node packages/core/bin/cli.mjs --log-level debug generate -t legacy-html -i ../node/doc/api/fs.md -o out
113+
node packages/core/bin/cli.mjs --log-level debug generate -t @doc-kittens/legacy/html -i ../node/doc/api/fs.md -o out
114114
```
115115

116116
> [!TIP]

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ Options:
6868
-v, --version <semver> Target Node.js version (default: "v22.14.0")
6969
-c, --changelog <url> Changelog URL or path (default: "https://raw.githubusercontent.com/nodejs/node/HEAD/CHANGELOG.md")
7070
--git-ref <url> Git ref/commit URL (default: "https://github.com/nodejs/node/tree/HEAD")
71-
-t, --target <generator...> Target generator(s) (e.g. @node-core/doc-kit/generators/web)
71+
-t, --target <generator...> Target generator(s) (e.g. @doc-kittens/react/web)
7272
-h, --help display help for command
7373
```
7474

@@ -87,12 +87,12 @@ Options:
8787

8888
### Legacy
8989

90-
To generate a 1:1 match with the [legacy tooling](https://github.com/nodejs/node/tree/main/tools/doc), use the `legacy-html`, `legacy-json`, `legacy-html-all`, and `legacy-json-all` generators.
90+
To generate a 1:1 match with the [legacy tooling](https://github.com/nodejs/node/tree/main/tools/doc), use the generators from the [`@doc-kittens/legacy`](packages/legacy) package.
9191

9292
```sh
9393
npx doc-kit generate \
94-
-t @node-core/doc-kit/generators/legacy-html \
95-
-t @node-core/doc-kit/generators/legacy-json \
94+
-t @doc-kittens/legacy/html \
95+
-t @doc-kittens/legacy/json \
9696
-i "path/to/node/doc/api/*.md" \
9797
-o out \
9898
--index path/to/node/doc/api/index.md
@@ -104,8 +104,8 @@ To generate [our redesigned documentation pages](https://nodejs-api-docs-tooling
104104

105105
```sh
106106
npx doc-kit generate \
107-
-t @node-core/doc-kit/generators/web \
108-
-t @node-core/doc-kit/generators/orama-db \
107+
-t @doc-kittens/react/web \
108+
-t @doc-kittens/react/orama-db \
109109
-i "path/to/node/doc/api/*.md" \
110110
-o out \
111111
--index path/to/node/doc/api/index.md

docs/configuration.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -100,17 +100,17 @@ Configurations are merged in the following order (earlier sources take precedenc
100100

101101
CLI options map to configuration properties:
102102

103-
| CLI Option | Config Property | Example |
104-
| ---------------------- | ------------------ | ---------------------------------------------------- |
105-
| `--input <path>` | `global.input` | `--input src/` |
106-
| `--output <path>` | `global.output` | `--output dist/` |
107-
| `--ignore <pattern>` | `global.ignore[]` | `--ignore test/` |
108-
| `--minify` | `global.minify` | `--minify` |
109-
| `--git-ref <ref>` | `global.ref` | `--git-ref v20.0.0` |
110-
| `--version <version>` | `global.version` | `--version 20.0.0` |
111-
| `--changelog <url>` | `global.changelog` | `--changelog https://...` |
112-
| `--index <url>` | `global.index` | `--index file://...` |
113-
| `--type-map <map>` | `metadata.typeMap` | `--type-map file://...` |
114-
| `--target <generator>` | `target` | `--target @node-core/doc-kit/generators/legacy-json` |
115-
| `--threads <n>` | `threads` | `--threads 4` |
116-
| `--chunk-size <n>` | `chunkSize` | `--chunk-size 10` |
103+
| CLI Option | Config Property | Example |
104+
| ---------------------- | ------------------ | ----------------------------------- |
105+
| `--input <path>` | `global.input` | `--input src/` |
106+
| `--output <path>` | `global.output` | `--output dist/` |
107+
| `--ignore <pattern>` | `global.ignore[]` | `--ignore test/` |
108+
| `--minify` | `global.minify` | `--minify` |
109+
| `--git-ref <ref>` | `global.ref` | `--git-ref v20.0.0` |
110+
| `--version <version>` | `global.version` | `--version 20.0.0` |
111+
| `--changelog <url>` | `global.changelog` | `--changelog https://...` |
112+
| `--index <url>` | `global.index` | `--index file://...` |
113+
| `--type-map <map>` | `metadata.typeMap` | `--type-map file://...` |
114+
| `--target <generator>` | `target` | `--target @doc-kittens/legacy/json` |
115+
| `--threads <n>` | `threads` | `--threads 4` |
116+
| `--chunk-size <n>` | `chunkSize` | `--chunk-size 10` |

docs/generators.md

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,18 @@ A generator is a single module (`index.mjs`) that exports its metadata and logic
4040

4141
### Step 1: Create the Generator Directory
4242

43-
Create a new directory in `src/generators/`:
43+
Generators live inside one of the workspace packages under `packages/<package>/src/generators/`. The existing groupings are:
44+
45+
- `@doc-kittens/legacy` — historical JSON/HTML formats
46+
- `@doc-kittens/internal``ast`, `ast-js`, `metadata` (foundational generators consumed by everything else)
47+
- `@doc-kittens/react` — React/JSX-based generators (`web`, `orama-db`, `jsx-ast`)
48+
- `@doc-kittens/website` — public website outputs (`sitemap`, `llms-txt`, `api-links`)
49+
- `@doc-kittens/extras` — specialised one-offs (`addon-verify`, `json-simple`, `man-page`)
50+
51+
Place your new generator in the package whose theme it matches, or create a new workspace package if none fit.
4452

4553
```
46-
src/generators/my-format/
54+
packages/<package>/src/generators/my-format/
4755
├── index.mjs # Generator entry point (required)
4856
├── constants.mjs # Constants (optional)
4957
├── types.d.ts # TypeScript types (required)
@@ -77,16 +85,16 @@ export type Generator = GeneratorMetadata<
7785
Create `index.mjs` with your generator's metadata and logic:
7886

7987
```javascript
80-
// src/generators/my-format/index.mjs
88+
// packages/<package>/src/generators/my-format/index.mjs
8189
'use strict';
8290

8391
import { writeFile } from 'node:fs/promises';
8492
import { join } from 'node:path';
8593

86-
import getConfig from '../../utils/configuration/index.mjs';
94+
import getConfig from '@node-core/doc-kit/src/utils/configuration/index.mjs';
8795

8896
export const name = 'my-format';
89-
export const dependsOn = '@node-core/doc-kit/generators/metadata';
97+
export const dependsOn = '@doc-kittens/internal/metadata';
9098
export const defaultConfiguration = {
9199
myCustomOption: 'myDefaultValue',
92100
};
@@ -130,7 +138,7 @@ function transformToMyFormat(entries, version) {
130138

131139
### Step 4: Register the Generator
132140

133-
Add an entry to the `exports` map in `packages/core/package.json`. If you follow the `index.mjs` convention, the wildcard pattern `"./generators/*": "./src/generators/*/index.mjs"` handles this automatically — no changes needed.
141+
Add a short subpath entry to the `exports` map in your package's `package.json`, e.g. `"./my-format": "./src/generators/my-format/index.mjs"`. The `./src/*` wildcard already exposes utilities and types under the longer path form for cross-package imports.
134142

135143
## Parallel Processing with Workers
136144

@@ -139,11 +147,11 @@ For generators processing large datasets, implement parallel processing using wo
139147
### Implementing Worker-Based Processing
140148

141149
```javascript
142-
// src/generators/parallel-generator/index.mjs
143-
import getConfig from '../../utils/configuration/index.mjs';
150+
// packages/<package>/src/generators/parallel-generator/index.mjs
151+
import getConfig from '@node-core/doc-kit/src/utils/configuration/index.mjs';
144152

145153
export const name = 'parallel-generator';
146-
export const dependsOn = '@node-core/doc-kit/generators/metadata';
154+
export const dependsOn = '@doc-kittens/internal/metadata';
147155

148156
/**
149157
* Process a chunk of items in a worker thread.
@@ -215,7 +223,7 @@ Generators can yield results as they're produced using async generators. Export
215223
```javascript
216224
// src/generators/streaming-generator/index.mjs
217225
export const name = 'streaming-generator';
218-
export const dependsOn = '@node-core/doc-kit/generators/metadata';
226+
export const dependsOn = '@doc-kittens/internal/metadata';
219227

220228
/**
221229
* Process a chunk of data
@@ -254,7 +262,7 @@ Some generators must collect all input before processing:
254262
```javascript
255263
// src/generators/batch-generator/index.mjs
256264
export const name = 'batch-generator';
257-
export const dependsOn = '@node-core/doc-kit/generators/jsx-ast';
265+
export const dependsOn = '@doc-kittens/react/jsx-ast';
258266

259267
/**
260268
* Non-streaming - returns Promise instead of AsyncGenerator
@@ -285,7 +293,7 @@ Use non-streaming when:
285293
```javascript
286294
// src/generators/my-generator/index.mjs
287295
export const name = 'my-generator';
288-
export const dependsOn = '@node-core/doc-kit/generators/metadata';
296+
export const dependsOn = '@doc-kittens/internal/metadata';
289297

290298
export async function generate(input, worker) {
291299
// input contains the output from the metadata generator
@@ -303,12 +311,12 @@ export const name = 'ast';
303311
// Step 2: Extract metadata from AST
304312
// src/generators/metadata/index.mjs
305313
export const name = 'metadata';
306-
export const dependsOn = '@node-core/doc-kit/generators/ast';
314+
export const dependsOn = '@doc-kittens/internal/ast';
307315

308316
// Step 3: Generate HTML from metadata
309317
// src/generators/html-generator/index.mjs
310318
export const name = 'html-generator';
311-
export const dependsOn = '@node-core/doc-kit/generators/metadata';
319+
export const dependsOn = '@doc-kittens/internal/metadata';
312320
```
313321

314322
### Multiple Consumers

eslint.config.mjs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export default defineConfig([
1212
{
1313
ignores: [
1414
'out/',
15-
'packages/core/src/generators/api-links/__tests__/fixtures/',
15+
'packages/website/src/utils/api-links/__tests__/fixtures/',
1616
],
1717
},
1818
{
@@ -94,8 +94,8 @@ export default defineConfig([
9494
},
9595
{
9696
files: [
97-
'packages/core/src/generators/legacy-html/assets/*.js',
98-
'packages/core/src/generators/web/ui/**/*',
97+
'packages/legacy/src/generators/html/assets/*.js',
98+
'packages/react/src/generators/web/ui/**/*',
9999
],
100100
languageOptions: {
101101
globals: {

0 commit comments

Comments
 (0)